Skip to main content

Full text of "CBM 8-Bit Magazine Index: Commodore World"

See other formats


$4, 06)L 


OM ISSUG 1 
Voline 2) Nuigpe 
| } A 
“aa 


aA4 
Ces 


SOFTWARE SUPPORT 


INTERNATIONAL 


We Carry America’s Largest Selection of C-64/C-128 Software! 


10 Game Grab B: 
Arkanol 

Beyond Dark Castle 
Beyond Zork 128 
Defender of the Crown 
Double Dragon 2 
Heavy Metal 

Heros of the Lance 
Keys to Maramon 
Mean Streets 
Monopoly 

Ms Pacman 

Ogre 


Geos 64 v2 $39.97 Swiftcalc w/Sideways 
POK & FLIG % Y 


4th & Inches 
Champshp Baseball 
Champn Basketball 


$7.97 
$12.97 
$9.97 
$9.97 
$12.97 
$14.97 
$9.97 
$9.97 
$12.97 
$9.97 
$9.97 


Dave Winfield Batter Up $9.97 


Fast Break 
Hardball 

Jack Nicklaus Golf 
Jordan vs Bird 
Leaderboard Golf 

Pro Football Facts 

Pro Soccer 

Pure Stat Baseball 
Sporting News Baseba 
Star Rank Boxing 


C-128 RGB Cable 
Computer Hand 2 
Convert A Com 
Disk Bank 10/3.5" 
Disk Bank 10/5.25" 
Disk Bank 100/3.5" 
Disk Bank 100/5.25" 
Disk Bank 70/5.25" 
Disk Mailers 

Drive Cleaners 
Serial Cable 6ft 
Serial Cable 10 ft 
Drive Power Cable 
User Port Cable 
Com Modem Adapter 


ll $9.97 


$15.95 


VN MEN PRODUCTIVITY 
Pacman $9.97  1750SuperClone $99.95 Geos 128 v2 $44.97 
Plundered Hearts $12.97 Basic Compiler 64 $12.97 Graphic Label Wizard $14,97 
Pool of Radiance 14.97 Big Blue Reader $29.97 Graphics Basic 
Portal $14.97 BAW Prog Tools $14.97 Home Designer 128 
Questron 2 $9.97 BIW Power C $9.97 Manager, The 
Rampage $7.97 BWTurbo Cartridge $17.97 Maverick v5 
Realms of Darkness $12.97 C128 Graphics Bundle $29.97 Model Diet 
Roadwars $7.97 Christmas Model Kit. $9.97 Newsroom 
Sidearms $7.97 CSM Protection Man 1 $14.97 On Line Help 
Steel Thunder $9.97 CSM Protection Man 2 $19.97 Outrageous Pages 
Strip Poker $14.97 Data Manager 2 $14.97 Postcards 
Trump Castle Casino $12.97 _Designer’s Pencil $9.97 Printmaster Plus 
Wheel Fortune 1-2-3 $9.97 Drive Align 1541/71 $12.97 Superbase 64 
Easy Working Tri Pak $9.97 Superscript 64/128 


Tony LaRussa Baseball $7.97 EDUCATIONAL 

Tournament Tennis $7.97 

WWF Wrestling $7.97 Early Leaming Friends $9.97 Spellicopter $9.97 

Acrojet $9.97 European Nations & Loc $9.97 Stickybear Math $9.97 

Apache Strike $7.97 Keys to Typing $9.97 | Stickybear Numbers $9.97 

Blue Angels $7.97 Memory Manor Cart $9.97 |_ Typing Tutor 4 $9.97 

F-14 Tomcat $9.97 Magic Spells $9.97 | Word Attack $9.97 

F-19 Stealth Fighter $12.97 Snoopy Sky Scramble $9.97 Word Spinner $9.97 

Flight Sim Games $4.97 

High Roller $7.97 

Jet Combat Sim $7.97 EFI ED HARDWARE 

Skyfox $7.97 

Super Huey | $797 G64 Keyboard w/ PS $79.95 1541 Clone Drive $39.95 

Top Gunner $9.97 6-128 Keyboard w/PS $139.95 40 Col Monitor $99.95 

€-128D Computer $174.95 80 Col Monitor «$139.95 

C c 1841 Disk Drive $64.95 Printers/Call for Make $39.95 
SORIES 1571 Disk Drive $129.95 Misc. CALL 


Floppy Disk Notcher $6.95 


Dust Covers - specify $7.95 Items Listed Above Do Not Include Shipping. U.S 48 States - Add $5.50 
Ergostick Joystick $16.95 per order. Alaska, Hawaii & Canada - add $5.50 for the first piece and 
CBM 1200 Baud $9.95 $1.00 per cach additional piece per shipment. Second Day Air shipping 
Aprotek 2400 Baud $49.95 is available, Call for shipping charges. Call Or Write For Your Free c= 
1351 Smart Mouse $44.95 Ca 2 Listing HUNDREDS Of Commodore Products And 
MW 350 Interface $44.95 Special Offers For Your Computer. Our Order Takers Are On Duty 6:00 
64 Power Supplies $34.95 am. - $:00 p.m. M-F and 7:00 am. - 3:00 pm. Sat. - Pacific Time 
128 Power Supplies $49.95 

Printer Ribbons CALL 


Userport Expander $24.95 Software Support Int. 
Video Ram Upgrade $49.95 SOFTWARE 2700 N.E. Andresen Rd. 
3.5" 10 cnt.Floppy ‘$7.95 Suite D-4 


a SUppant Vancouver, Wa 98661 
(360) 695-1393 


1-800-356-1179 


Major CreditCards Accepted. 


C QO N 


ISSUE 11 . 


VOLUME 2 . NUMBER 6 . NOV/DEC 1995 


Features 
14 A Simpte Guive to Disk Drives by Maurice Randall 
A bit of history about the Commodore 1541 and a look at its use today. 
18 Cormopore Drives are History by Jim Brain 


A guided tour through the Commodore Drive museum. 


22 Seriat Bus Kernat ROUTINES by Doug Corton 


Learn to access serial bus devices in machine language. 


COMMODORG 


GeNeRAL MaNacer 
Charles R. Christianson 
A 
Epitor 
Doug Cotton 
° 
Assistant Epitog 
Jenifer Esile 
So 


Reviews 


32. FontiGus by Gaelyne R. Moranec 
Editing character sets is made simple. 


33° Turbo ASSEMBLER by Jim Brain 
Review of an assembly program for the 64. 


Apverrisine Sates 
Charles A. Christianson 


(413) 525-0023 
¢ 
ProtoGrapHy 
Wayne Wrubel 
é as he Cocumns 
Dog Catton 10 Just For Starters by Steve Vander Ark 
Jenifer Esile Printer selection and simple BASIC programming. 
ee 13 Foreicn EXcHANGE by Joseph Gaudl 
What can GoDot really do? 
Evectronic Pré-Press & Paintin 36 GRAPHIC INTERPRETATION by Steve Vander Ark 
Mansir/Holden Steve continues his series on GEOBASIC. 
bd 38 Carrer DETECT by Gaelyne R. Moranec 


Cover Design by Jenifer Esile Tips on navigating your way through the web. 


42 Over THe Ene by Don Radler 
‘Sonora © ai ia Iuarva COMNGIDUOIG INGIUEI Raaaes What are the consequences of Virtual Reality technology? 


are trademarks or registered trademarks of Escom GmbH 3 

Commodore World isn no way allated wih Escom GmbH, 44 Hago Ties by Doug Cotton 

‘owner of the Commodore logo and technology. Commodore Hardware device number changes. 
Maurice Randall 


World is published 8 times annually by Creative Micro Designs, 46 GeoProcranist & 
Some common routines, the Sway. 


Inc,, 15 Benton Drive, East Longmeadow MA 01028-0646. 
Socond-Class Postage Paid at East Longmoadow MA, Annual 
subscription rate is US$29.95 for U.S, addresses, US$35.95. 

for Canada or Mexico, USS45.95 for all EC Counties, and 48 Basic INSTINCTS by Gene Bark 


US$57,95 to all other addresses worldwide. All subscription An example of using ML subroutines in BASIC, 
payments must be provided in U.S, Dollars. Mail subscriptions 
to CW Subscriptions, c/o Creative Micro Designs, Inc., P.O. 50 PERIPHERAL VISION by Jim Butterfield 


Box 646, East Longmeadow MA 01028-0646. 


Entire contents copyright © 1995 by Creative Micro 
Designs, Inc., unl herwise noted. No part of this 
publication may be printed or otherwise reproduced by any 
means without prior written consent from the publisher. All 
programs provided in this publication ara for the prsonal use 
of the reader, and may not be copied or in any way distributed, 
Allrights reserved. Programming examples and routines inthis 


52 


Null characters and how to manage them. 
Assematy LINE by Jim Butterfield 


Using processor registers and debugging tips. 


issue which aro presented for educational purposes may bo 
Usod in the creation of programs bythe purchasorotthisotths | LJIEGPARTMENTS 

‘magazine, provided credit for the routines is clearly presontod 

in cithor the program documentation, or the program itselt. 2 From tHe Eoiror & On Tie Horizon 

Grealive Micro Designs, Inc,, assumes no responsibilty for 4 Bacau BS: CussreoiAny See Our 
orrors or omissions in editorial, program listings or advertising ‘ 

content. Creative Micto Designs, Inc. assumos no liability for 6 Commopore Trivia 56 Apverniser’s Inoex CHK-LIST 


advertisers claims or reliability 


POSTMASTER: Send address changes to: CW Addross 
‘Changes, c/o Creative Micto Designs, Inc,, P.O. Box 646, East 
Longmoadow MA 01028-0646, 


Utility 
On Page 54 


CMD/CW MARKET SURVEY 


‘ditor column 


We'v 
in this i 


kipped our usual From The 


that they help companies like ours to better serve 
you, our customers. 


sue to bring you something we feel is far 
more important—a survey. Yes, | know, Most of 
us hate filling out surveys, but there's no doubt 


Of course, this also means you're helping us 


stay in business, and that has value. Soas 
for your as 


abonus 
stance, we'll issue a $5.00 credit 


towardsa future purchase from CMD toeveryone 
who returnsa completed, legible response to this, 
survey. 


Please send you completed survey to: 


CMD/CW Market Survey 

Creative Micro Designs, Inc. 

P.O, Box 646 

East Longmeadow, MA 01028-0646 


Demographic Information 


Your CW subscription number; 


2, Youra 


ge; 


16. 


How many more years do you think the 
Commodore will meet your needs? 


. Most computer users outside of this market 


consider the Commodore obsolete, Why do you 
feel differently? 


4. Number of years of education: 


4. Annual Income (optiona 
5, Number of Children: 


6. Children’s Ages 


General Questions 


For how many years hav 
computer? 


8. What types of computers have you owned? 
A. C64 B.C-128 C, MS-DOS 
D. Macintosh —E, Amiga 
F, Other (specify) 


18. 


19, 


(a) If you were to buy another computer at this 

tim computer platform would you 

consider most seriously? 
A.MS-DOS —_B. Macintosh 
D, Other (specify) 

(b) Why? a 


C. Amiga 


Telecommunications 


24, (a) Do you currently use your Commodore for 
telecommunications? 
(b) Ifso, what services do you use and/or 
subscribe to? 


A.Internet B.GEnie C, CompuServe 
D. Delphi E. BBS's 
F. Other (specify) 


(c) What terminal program do you use? 


(@® What brand and speed modem do you 


have? 


. What additional telecommunications 
capabilities would you like to see available to 
Commodore users? 


Assuming that you were making a decision 
whether or not to change platforms today, what 
additional features or new periphe 
keep you from changing? 


9. Which computers do you still use? 
A, C64 B.C128 CN 
D. Macintosh E, Amiga 
F, Other (spe 


y) 


10. How many hours per week do you use each of 
the above listed computers? 


11, What are the two most frequent uses for each of 
the computers listed above? (i.e, games, 
productivity, telecom., desktop publishing., 
etc). 


12. How long have you owned your Commodore 
computer(s)? 


13, How satisfied are you with your Commodore's 
ability to perform the tasks you want to use 
your computer for? (Use a number from 1 to 10 
with 10 being most satisfied.) 


14, What features or characteristics do you most 
like about your Commodore? 


20. 


22. 


23. 


y that existing manufacturers are 
producing computers that best meet the needs 
of the average home user? 


What features do you feel are most important 
for an entry level computer and can you name 
an existing computer that offers them at a 

ple price? 


(a) Would you be interested in anew CMD. 
computer if it had compatibility with existing 
Commodore software or hardware?. 

(b) What features would you deem to be mo: 
important and what specific compatibility level 
would you consider satisfactory? 


Commodore World 


‘e you satisfied with the quality and 
content of this magazine? 


. Do you feel as though you gain knowledge from 
each issue? 


. Is there (a) too much, (b) not enough, or (c) 
enough coverage of CMD products? 


29, What would you like to see more of? 


|. What would you like to see less of? 


31. How would you rate the artistic quality of 
Commodore World? (Use a number from 1 to 
10, with 10 being best.) 


32. How would you rate the editing quality of 
Commodore World? (Use a number from 1 to 
10, with 10 being best.) 


33. Please also forward any additional comments 
that you feel will help us produce a better 
product or publication. 


15, What features or characteristics do you least 
like about your Commodore? 


COMMODORE WORLD 


(© How much would you be willing to spend on 
such a computer, without a monitor? 


(d) Would you still be interested if it required 
you to purchase an SVGA monitor (approx, 
$200 to $300)? 


Issue 11 


LOADSTAR SOFTWARE VALUES! 


The Compleat* Series 
The Compleat PRINT SHOP I: (tho print Shop by Broderbund or 


Printmaster required). Over 1300 artistic and never before published PRINT SHOP images. 
Tho smart, fast software package included allows you to 
quickly scan through the many PRINT SHOP images 
sequentially, by name, or by group number, Press a key and 
‘save the graphic you want in 2-block, 3-block and even 
PRINTMASTER grap les! Al tat plus a pint gud to 
your new sea of graphic files. And if you like the first 
you'll probably want to get your hands on The 
pleat PRINT SHOP II, which also contains over 1300, 
PRINT SHOP images, previously published on LOADSTAR 
Issues over tho past ton yoars. Included is the same smart 
fast software package included in The Compleat PRINT KssslShiiiiet tists 
SHOP 1, Each volume is $20.00, 


The Compleat Programmer: secome tne Commodore programmer 
you'vo always wanted to bo! Mogabytes of knowledge crammed and stutled onto eight 5.25- 
Inch disks of two 1581 disks! Plus wa include all the fools, extensions, languages, assambiers 
tutorials and utilities you'll need to create the same type of software you see on LOADSTARI 
‘This massive collection is way over two iegenyine Of instructional text and valuable tools. 
$20.00. For $5 more, got C= Hacking MAG, not available separately, to complete your 
programming set 


The Compleat Maurice: a compiiation of 26 solitaire card games written by 
Maurice Jones, the acknowlodgod mastar of card gama simulations for tho C-64/128, Thoro's 
even a brand new, never before published game called Boomerang. Two 5.25 inch disks or 
‘one 3.6 Inch disk, $20,00 postage paid! 


The Compleat Dave: two 1581 disks or three 1541 disks crammed with SID 
‘music. Ovor 250°classic molodies trom yosteryear, arranged and transcribed by tho Mastor of 
‘Music, Dave Marquis, and now they're availablé in one gigantic 8-hour collection. If you enjoy 
SID music, you owe it to yaurselt fo gat THE COMPLEAT DAVE. Two 1581 disks or three 
1541 disks $20.00 postage paid! 


The Compleat Walt: ton years of walt Harnod's 
sideshows and mutmedia events ganared ino one huge colecton 
Seven 5.25-inch disks or three 3.5 inch disks! Over 250 pictures, 
ineluding some that have nover been published. The greatest ong: 
man collection of art on any computer plattorm! $20.00 postage paid! 


The Compleat Roger: 25 educational quiz programs, 
each carefully cratted by Rage? Norton, an educator wha uses C-645. These programs come 
crammed on two 5.25-inch 1541 disks or one 1581 disk. $20.00 postage paid! 


* No, we didn’t misspell “complete.” Compleat is the ten dollar spelling of complete. 


Other Products 


Geopower Tools - 19 Geos utiities: Calendar Printer, Fast Format, Geo Fetch (grab 
any portion of a screan as a Photo Scrap), Phoonix (resurrect a trashcanned file), Programmer's 
Calculator are just. a tow of tho handy tools: Sido Two i lod wth Clip Art (in Photo Album format) 
and fonts. $9 95 (C-64/128) Item #OGOS25, 


Songsmith - coaostar's own music-making program. With this deluxe music 
editor/player you can easily transcribe music from sheet music of make up your awn tunes. 
‘Songsmith comes with a slick 30-page manual and a jukebox player with eight tunes, $9.95 


Game Star #1 ign gamos trom LOADSTAR #70-#100), The Tonomont, Stack Em, The 
‘Sherwood Open, Goms, Stoa'th Bomber, Eagle Eyes, Moonraker & Circuitry, $9.95 


Just For Fun cignt original gamos. there are arcade games, educational games, 
puzzle games and just games that are just plain tun on this disk. $9.95 


Fun Four - Four origina! games. A huge maze gamo, trivia gamo, solitaire and a space 
shoot ‘em up ~ all runnable trom a menu. $9.95 


Sport -in tho early days of scionce, “sport” moant ‘mutant,” This is a full novel on C-64 disk 
by author, Jett Jones, about a murdorous neo-human, Over $00 terrifying pages. Automatic 
resentation softwara included, Printing capabilly, Bookmarks. Warning This is 
FOR): roa! novel with strong contont, frank languago, violence and adult situations, I 
the hare iting acon of roa sci:vhrror novls tums your stomach, lange 
don't buy this book, Must bo 18.1 CMD HO disk , 2 3.5:inch disks or 3-8:26:inch disks, $5.95 
$1.00 Shipping 


Brainpower/Brainstorm - é0-column word processor and idea processor for the 
C-128. These two programs are together on one disk. It comes with a detailed 32-page manual, 
$9.95 (C-128 only) Item #069421 


Best Of Loadstar Compilations: Loaostan is over 11 years young! We 
have § anthology disks that take you through the evolution of LOADSTAR, from humble 
beginnings to the woll-oiled machine wo've become. i you want to hop on a time machine and go 
back. start with The Best Of LOADSTAR #5 and move your way back to The Best Of 
LOADSTAR #1. Each of the 136 back issues are available for purchase with discounts on largo 
‘dors for you colectors out there. Best Of LOADSTAR cisks are available on 5 25uinch disks only 
C64 ack. $9.95. 


Master Base - patabase of users’ groups for the 80-column C-128. This is a fast, 
powerful database program for handling addresses and mailing labels (includes barcode printing) 
‘The disk also has a file of over 600 users’ groups addresses. $4.95 (C-128 only) 


LOADSTAR is a monthly “magazine on disk" for the Commodore 64/128. Subscribers receive two 1541 disks (or one 1581 disk) in their mailbox every 
month filled with news, articles and programs. These non-PD, high-quality programs are written by the best home-based programmers in the field and edited by 
the crack LOADSTAR team of Fender Tucker and Jeff Jones. Subscription prices are at an all-time low of $69.95 for a 12-month subscription, or $19.95 for a 
three-month subscription. You may also elect to subscribe “by the month,” where we charge your credit card $7.95 for each issue after it's shipped. 


Loadstar Products Order form 1-800-594-3370 


Quantity Description 


| 3-month LOADSTAR subscription $19.95 na 
1-year subscription to LOADSTAR $69.95 na 
_Month to month @$7,95 $7.95/mo n 

$20.00 0009D5 
$20.00 0001D3 
inch $20.00 
inch $20.00 
-inch $20.00 
$20.00 
$5.00 
$20.00 
20.00 
$20.00 
$20.00 
$20.00 
$20.00 
$20.00 
$20.00 
$9.95 
$9.95 
$9.95 


0002D3 
000SDS 
000SD3 
0006D3. 
0007D5 
0007D3_ 
070525 
070523 
070425 
070423 ___ 
0004D5S. 
0004D3 


Compleat Programmer on 5 
Compleat Programmer on 3.5-inch 


Compleat Walt 5. 
Compleat Walt 3. 
Compleat Roger 

| Compleat Roger 3.5-inch 
Geopower Tools 


070323 


Sport 3.5-inch 
Hie 070327 


Sport CMD High Density 
TOTAL FROM THIS COLUMN 


Volume 2, Number 6 


Price Item# Total Qty Descript Price 


0010D5__ = 


Item# Total 


$9.95 
$9.95, 
$9.95 
$9.95 
$9.95 
$9.95 


Songsmith 
Best Of LOADSTAR #5 


S 049525) 
Best Of LOADSTAR #4 


049425) 


Best Of LOADSTAR #2 
Best Of LOADSTAR #1 


énclosed: | 


Total 


3 COMMODORE WORLD 


GACKTALK 


LETTERS AND QUESTIONS FROM OUR READERS 


Dear CW, 

Does anyone out there know a way to back up 
Cosmi Swift Sheet 128? Or does anyone know of 
a pretty good 80 column spreadsheet that’s 
available somewhere for the 128? Ihave Maverick 
with all of the modules, and it does copy the 
program, but the copy will not boot up. 


Thanks 
TJ. Moyles 


Tobe honest, no-one hereknew theanswer, as noneof 
us have that particular program. But we've obviously 
gota few thousand readers, one of whom may know. 
So if anyone has the answer to this question, drop us 
aaline, and we'll eprint it for everyone to see. 


Dear Commodore World Magazine, 

I read in Issue 9 of CW that geoFax is now 
available. Is therea bed or page scanner available 
for the Commodore 128 so that I can scan images 
and then fax them? Can | use the HandyScanner 
and the Pagefox to scan images into GEOS? How 
can I get them? Will geoFax automatically slow 
down the baud rate if the remote fax machine is 
going at the slower rate of 9600 baud instead of 
14.4 K baud? What happens if someone is on the 
telephone when receiving a fax, will the fax get 
lost or can that someone just hang up the phone? 
And, what happens if the computer is off when 
receiving a fax, will the fax get lost or can you just 
cut on the computer? 


Sincerely, 
Jefirey L. McLean 


There aren't any page or flathed scanners supported 
on the Commodore just yet, but geoFAX itself can 
sean images using many of the modern fax machine 
available today. Thisis done by getting a fax machine 
that supports direct connection to a fax-modem 
(without hooking either into your telephone jack). 

The Handyscanner 64 can indeed be used to scan 
images for placement into GEOS applications, It 
currently comes supplied with a utility program to 
convert Handyscanner files into geoPaint documents, 
Handyscanner and Pagefox are both available in the 
US from CMD. 

Fax machines and fax-modems automatically 
connect with each other at whatever speed the calling 


COMMODORE WORLD 


machine is set for, So if someone calls you with a fax 
machineset at2400 baud, your 14.4K bps fax-modem 
will step down to 2400 baud to match the incoming 
signal. 

Ifsomeone tries to send you a fax while your phone 
line isin use, they Il get a busy signal, Likewise, ifyour 
computer is off, the modem won't respond correctly to 
the caller. So they'll just have to try again later. 


itor, 

My first issue of Commodore World, August/ 
September 1995 has the type-in programs for 
which I wanted. 

But when | typed in the CHK-LIST and ran it I 
was rewarded with Working....(4 lines) and 
“2ILLEGAL QUANTITY ERROR IN 32”, 

I very carefully checked every line, including 
thedatastatements, where founda fewboo-boos, 
several times and not only checked, but re-typed 
the lines 10-60 three times, but I only got the 
same message, above. What am I doing wrong? 


Dear 


Respectfully, 
Roland Lowery 


The problem almost has to bein the data statements. 
Run the program in 64 mode (if you're using a 128), 
and when the error occurs, type the following: 


PRINTM,D 


You'll see tvo numbers on the screen, 


e first isan 
where data was to be placed, and the second 
is the data itself. The first number should roughly 
coincide with the line numbers in the program (in 
most cases it will fall somewhere between the values 
used for two of the line numbers). Now look at the line 
numbers in that area of the program to see if you can 


addres 


Jind a data element that matches the second number 


on your screen. Once you find it, compare it to the 
lising in the magazine, and make the necessary 
corrections to your program. 


Dear Doug, 

As an eight-year GEOS user and Commodore's 
resident PostScript guru, I have marveled at the 
expertiseexercised in the pages of Commodore World. 
However, there are times when great articles have 
left out information that leaves me quite puzzled. 


4 


Sherry Freedline’s article, “Spreadsheets by 
the Numbers,” sang the praises of geoCale, only 
to end that section by saying, “If only geoCale 
could create graphs as well.” | always thought 
that geoChart was supposed to create graphs, 
Sherry does not mention if it is fair to expect 
GEOS users to buy this application tosupplement 
Cale. Nor does she say if it functions well 
when used for that purpose. She simply fails to 
mention it at all! 

Anarticle by Steve Vander Ark gives us “Some 
Tips on Using GEOPUBLISH.” He states, “You 
sin the 


get a taste of the potential that still exis 
Commodore computer when youseea document 
slide out of a laser printer...” I can verify his 
euphoria here because I have been using a laser 
printer with geoPublish for nearly five years. 
‘Therefore | was surprised to later read that 
“resizing [bimapped graphic images] is pretty 
much outofthe question.” Tothe contrary, GOES 
users who have access toa PostScript compatible 
laser printerat homeorat KINKO'S, for example, 
should try to find the biggest bitmap possible for 
nearly all their geoPublish graphics. 

PostScript offers GEOS users the unparalleled 
ability to increase the resolution of Commodore 
graphics, normally 80 x 72 dots per inch. By 
pasting a 4" x 4" size geoPaint image in a2" x 2" 
space within a geoPublish document, you can 
double the active resolution of the image to 160.x 
144 dots per inch. It beats the jaggies! 

Steve warns us that using “oversized images” 
caneat upa lot of 
the laser printerhasgottena"bad rap” forprinting, 
graphics that look “blocky.” [suggest that anyone 
whoseriously thinks thismay bea problem should 
subscribe to the laser printed Double-Click, a 
user newsletter of the East Lansing Commodore 
Club produced by Maurice Randall. 

We need to keep in mind that, for those who 
want to use these larger images, geoPublish will 
allow us to downsize any image without penalty 
on a PostScript laser printer. 


Sincerely, 


K. Dale Sidebottom 


Thanks, Dale. Your comments are both welcome and 
appreciated. And you're certainly invited to submit 
detailed articles on your favorite subject to us. 


Issue 11 


PERFECT TAX’ 


Get PERFECT TAX™ now and 
relax on April 15th... 


¢ THIRTEENTH SUCCESSFUL YEAR! * MANY THOUSANDS ALREADY IN USE! 
¢ Your Simple Answer to the TAX Reform Acts of 1986 through 1994 


Stores data files on disk for quick recall 

Yearly upgrades available to registered users 

Fully screen-prompted, menu-driven and easy-to-use 
Includes helpful tutorial example and forms library 
Built-in calculator accumulates input and enters totals 


Instant recalculation of your entire return when you 
change any item with just a single keystroke 

Prints directly onto IRS forms and Schedules or to 
blank computer paper for use with transparent overlays 
PERFECT TAX is Tax Deductible 


Supports all of these FORMS and Schedules: 
FORMS: 1040, 1040A, 2441, 3903, 6251, 8615 and 8815 
Schedules: A, B, C, D, E, SE, 1, 2, 3 and EIC-A 
TAXPERFECT 128 additionally supports: 

FORMS 2106, 2119, 2210, 3800, 4136, 4256, 4562, 4684, 4952 
and 8396, plus Schedules EIC, F and R 


¢ PERFECT TAX is the quick, correct, easy 

way to do your taxes * Absolutely up-to-date 

with the Tax Reform Act of 1986/87/88/90/93 and 

all_new tax changes * Simplest tax return 
preparation program available - at any price « Single- 
keystroke form-to-form change * Automatically 
calculates and transfers data from every FORM and 
Schedule to the FORM 1040 « Simply answer the 
questions - PERFECT TAX calculates the return, tax due 
or amount of refund due you * Automatically elects the 
greater of Standard or Itemized deductions ¢ Prints data to 
all FORMS or Schedules you need for your complete return 
- ready to sign and file * Highly acclaimed by the tax pros, 
CPA's and tax preparers, PERFECT TAX is easy to 
understand and a pleasure to work with * Separate versions 
available for Commodore 64 and Commodore 128 computers 


PERFECT TAX 64 $69.00 
PERFECT TAX 128 $79.00 


(plus shipping—see our main ad) 


‘Available from 
Creative Micro Designs, Inc. 


-800-638-3263 


FOR THE BEST SELECTION OF 
REFURBISHED COMMODORE EQUIPMENT 
CALL 1-800-638-3263 


JiffyDOS 


COMPUTERS 


C64 or C64c (refurbished) $89.00 
re-installed on 
Benin C128 (refurbished) 5149.00 
disk drive! 128-D (refurbished) 5239.00 
MONITORS 
1702 (refurbished) 599.00 
1802 (refurbished) 5429.00 
i SPECIAL! 
: 80-column monitors CALL 4544-Il Drive 
30 DAY ——ODRIVES 
= | WARRANTY = 1541 (refurbished) 575.00 
TENCE oN all refurbished 4544-1] (refurbished) SPECIAL! $89.00 
equipment 


SPECIAL! $99.00 


Prices donot include shipping charges, and are 
subject to change without notice. All items 
subject to availability, call before ordering 


1571 (refurbished) 


SPECIAL! 
1571 Drive 


Creative Micro Designs, Inc. 


Volume 2, Number 6 5 COMMODORE WORLD 


Welcome to another edition of Commodore 
ia. As many of you may know, these trivia tr 


questions and answers have been donated by me 
to the Commodore community at large. Unlike 
other articles in Commodore World, these tri 
questions have been placed in the public dor 
Task only that the trivia questions r 
and unchanged, and that my name and address 


me, 
where the tr 


Enjoy. 


appear somewhere so users can contact me, The 
oused fora contest runon the Internet; 
contact me at the included address for more 
information. Because curiosity has the best of 
ways welcomea note or post 
goes, I always welcome new 
questions—provided they come with answers, 


Jim Brain 

Brain Innovations, Inc. 
602 North Lemen 
Fenton, Ml 48430 
brain@ mail.msen.com 


ddetailing 


COMMODORE TRIVIA #10 QUESTIONS 


$090 The 6502 has a rich history. It is modeled after another 8-bit 


microprocessor. Name the processor. 


$091 The 6502 b 


6 a older brother that was never produced, Name its 
number de i 


gnation and why it was not produced. 


$092 How many different opcodes are considered valid and “legal” on the 


MOS NMOS 6502 line? 


Bi 
r 


$093 


ery instruction takes at least __ cycles to complete. Fill in the 
ing number, 


Which instructions take more time than necessary as a result of the 


answer to $093? 


$094 


$095 What did MOS Technologies manufacture before introducing the 


650X line of microprocessors? 
$096 Three companies manufactured the 6502 under a cross-licensing 
agreement. Name them. 


$097 InN1 


nd, how fast does the LMHz 6510 in the C64 actually run? 


$098 What about in PAL-land? 


$099 Data i 
edge? 


latched into the 650X microprocessor on the (rising/falling) 


SO9A Through the years, the 650X line has changed yet 

the part has not been changed. (A family numbers the upper 2 digits 
in this case) Name the other family numbers used by MOS to denote 
the 650X line. 


mily number 


$09B Consider the following code: 
Idx #10 
Ida Stt 


Wh 


at location does the accumulator get loaded with? 
$09C What about the following? 

Idx #10 

Ida (Sff),x 


$09D How many CPU clock signal lines does the 650X require to run? 


SO9E Where does the 650X line fetch its first byte from after reset? 


S$O9F One of the original designers on the NMOS 
Western Design Centerin Arizona, andr 
CPU chips. Name him. (Hint: it's not Chue 


2 CPU now heads up 
es the 65C02 and 65C816 
Peddle!) 


COMMODORE TRIVIA #9 ANSWERS 


$080 The magazines were originally called Commodore 
and Power/Play: Commodore Home Computing 
seem to nail down the name of the latter as I see Power/Pla 
Commodore: Power/Play used as the origina as’ well. 
Anyway,Commodore Microcomputers started its life in 1979, 
whereas Power/Playstarted in 198. Both magazines were published 
until around 1987; when they were merged to form Commodore 
Magazine, Then, around 1990, the magazine was sold to IDG 
Communicationsand wasmerged into RUN, RUNwas continued for 
a while, but was finally pulled out of circulation, Creative Micro 
Designs purchased the rights to the magazine, and now Commodore 
Worldis being produced by CMD, | am not sure how strong (if any) 
alink there is between RUN and CW, but some of the same authors 
write for the new publication. Just for added info, here are the ISSN 
numbers: 


Microcomputers 


Commodore Microcomputers (Commodore Magazine)( 
( 


Power/Play:Commodore Home Computing 
RUN (Comimodore/RUN) 074 


nsactor” is also a correct answer, and info on itis below. 


$081 TI ‘arnsactor”. One of the noted C64 hardware-hacking 
magazines, it was originally published by Commodore Canada, 
betore being sold to an individual named Mr. Hilden. Its ISSN 
number is 0838-0163. As far as I can tell, this magazine died 1 


COMMODORE WORLD 


deaths, but officilly ceased to exist in 1989-90, Its first issue is dated 
April 30, 1978. 
$082 No! The newer 128 compatible chip (VIC-Ie) has 8 extra pins to. 
perform timing functions specific for the 128. In addition, some of 
the registers have extra functions. However, a suitable card to make 
it compatible can be made. 


Phase Alternating Lincistheanswerlwaslooking for, which describes 
the video encoding used in Europe, but Programmable Array Logic 
isalso correct, which describesthe family of chipsusedas “glue” logic 
for the C64 1/0 and processing chips. 


$083 


$084 5: Play, Rewind, F 


separated the stop 


orward, Record, and Stop/Eject. Later models 
and eject functions into two buttons. 

$085 When you change the volume of a voice. The voice need not be 
outputting anything. 


$086 1 


P your pi 
Control P gram/Monitor 
Control Program for Microprocessors 
Control Program for Microcomputers. 
‘The last one is considered by many to be most correct. 
$087 


Normally, the user cannot enter a line number higher than 63999, If 


Issue 11 


you want to be tricky, however, the numbers can be made to go up to 
65535. 


$088 The PI symbol. It is [SHFT-UPARROW] in uppercase mode, but 
becomes a checkerboard-like character when in lower-case mode. 
Unlike the graphics characters printed on the fronts of the keys, this 
oneispositionedin the middle ofthe p.and should probably be 
accessible in both character sets. 


$089 In lowercase mode, type a shift-@ 


SO8A It is different from the 64/128. It is 50003. A zero (0) here indicates 
old ROMs, while a one (1) indicates new ROMs. 


$08B Interrupt ReQuest. This interrupt is used for things that should 
usually be allowed to interrupt the processor. This interrupt can be 
ked off by the SEI instruction. 


$08C Non-Maskable Interrupt. Unlike the IRQ, this interrupt cannot be 
masked by an instruction. However, some tricks can be used to 


$08D *N’ stands for Negative. On instructions that change this flag, it is 
set to be equal to bit 7 of the result of the instruction. 


SOSE It stands for decimal mode. This mode causes certain instructions 
to treat a byte as 24 bit BCD-coded nybbles. 


Note that ?# will fail. 


SO8F pR is the way to abbreviate PRIN 


COMMODORE TRIVIA CORRECTIONS 


It’s ashame that trivi 
and also correct errors that crop up a 


soon as Lean, So, here 


$000 Wouldn't you know it, | messed up on the first question. Although the 


answer stated is technically correct, here is a much better explanation: 


Q$000 — Commodorestarted outintocomputi 
Jam not sure ifthe first ones had the P 


does PET stand for? 


vith the PET seriesofcomputers. 
‘T emblem, butnonetheless, what 


A$000 


Personal Electronic Transactor 
It seems this name was an afterthought, so many other expansions can 
also qualify. [twas basically named PET to cash in on the Pet Rock craze. 
Some examples of other expansions: 

Personal Electronic Translator 

Peddle’s Electronic Transactor 

Peddle’s Ego Trip 


This is where the Commodore magazine Transactor got its name. 
($009 What is the difference between the printers in #$008? 


MPS 81 


AS009 al), CBM 1521 ial), PET 4023 (IEEE-488). 


(After presenting this answer, a number of people indicated that they 
had printers with dot patterns different from my answer. My only 
explanation is that, since the print heads on ‘the printers were 
interchangeable, Commadoretookadvan ageofthat tokeep stocklow.) 


QSO1F — Commodoredid NOT documentthe RREG commandin C128 Manuals, 
so this question is technically correct, butalmost everyone considers the 


C128D to be the same as the C128. The revised answer follows: 


On the Commodore 128, the user manual left three commands 
undocumented.One works, and the others give a not-implemented 
error, Name the commands and wha h one does or does not do. 


QSOIF 


ASOLF — ‘The answer depends on which manuals you have. In the C128 System 
Manual, the C128D System Manual, and the C128 Programmer's 
Reference Guide, the following commands are not documented and 


both return an unimplemented command error: 


OFF 
KEY OF 
Quit 


Itis, however, valid when used with the KEY command, asin 


The third command is actually implemented, yet is not documented in 
the C128 System Guide: RREG: reads the internal registers after a SYS 
command. On page 326 of the C128D System Guide: “~RREG 
fal, [xIL-fy]L status}]]] 

‘This function returns the contents of the computer's internal registers 
after a SYS command. The contents of a, and processor status 
registers are assigned to the variable list. 


Volume 2, Number 6 


are not trivial (pun intention undecided) to fix. | try my 
a compilation of corr 


best to both present complete and correct answers for the trivia 
tions for the Commodore Trivia: 


EXAMP! 
10 SY 


The above example calls a standard kernel routine to check if'a given 
logical channel is in use (in this case, logical file 8), If it isn’t, “NOT 
FOUND" isprinted. Ifitisin use,“FOUND "is printed, and the logical file 
number, devicenumber,andsecondaryaddressofthechannelisprinted. 
So, this command is documented in the C128D System Guide. It is 
interesting to note that the command does not appear in the BASIC 7.0 
encyclopedia in the C128 PRG, but does appear in the command list 
immediately following the encyclopedia. It seems that Commodore 
either forgot about the command when introducing the C128, and 
remembered it when publishing the C128D System Guideand the C128, 
PRG, or decided to leave it out and then later broke down and included 
itin later manuals, 


QS03E On every Commodore disk, the drive stores a copy of the BAM. What 
does the BAM stand for! 

ASO3E — The correct answer is Block Avail billy ap. Somehow, 1 got BAM. 
partially confused with the FAT (File Allocation Table) on MS-DOS, 

QS04C How many pins does a Commodore 1525 printhead have in it? 

AS0AC The 1525 (and 1515)platen actually has 18 bumpson it, which allow the 
single pin print head to construct the 7 bit tall graphi 

QS$060 When you turn on stock Commodore 16, how many bytes free does it 
report? 

A $060 ck and checked on the RAM in the Commodore 16 (when 1 

irthed it at the house), and found that it does indeed have 
bytes free, as the answer stated, 
QSO6E Although theansweris correct, the wait 6502.x operation will only print 


out the secret message on Revision 2 ROMs. Evidently, Commodore 
found this message and removed it in Revision 23 ROMs. 


To date, these are the only corrections I have been made aware of. However, don't 
think lam actually thiscloseto perfection. Commodore World’sinstallmentsofthe 
triviaare 1 editions or so behind the latest edition (which can be found on-line), 50 
CW readersnever see some of my more ridiculous mistakes. I greatly appreciate the 
thousands of Internet users, FIDONet users, and magazine and newsletter readers 
that check over my answers for corrections. 


COMMODORE WORLD 


COMMODORE AND Comput 


If Your Product Name is too Perfect 
We've been recently informed by 
their Fede: : income tax preparation softw 
TAX . Will now be marketed under the 


ancial Services Marketing Corp. that 


. formerly known as 
ne PERFECT TAX™. 
ge comes at the end of nearly seven years of litigation over the 
name with industry giant WordPerfect (recently obtained by Novell). 

Details of the litigation and subsequent name change will be published 
ata later date, asa final ruling on an appeal brought before the Fifth Circuit 
Court is still pending. 


Another Commodore Publication Passes Away 

Sadly, we have to report that Lynn-Carthy Industries, Ine. has finally 
notified us that they no longer will attempt to resurrect their publication, 
dieHard. It's now been a year since LCII shipped their last issue of this 
publication. While many of us remained hopeful that dieffard would 
somehow manage to overcome their problems, official notification that it 
would not be financially possible for the public 
our offices last month. 

In addition to the announcement, LCU approached Commodore World 
and other Commodore-related publications in hopes of striking a deal to 
fulfill remaining die/ard subscriptions. Due to the large losses this would 
incur, the opportunity was declined by e« 
learned, however, that LoadStar has agreed to substitute their disk-based 
publication tosubscribers of dieHard's Spinner disk, providing subscribers 
with a two-disk issue for every two disks remaining on their subscription. 


ion to continue reached 


ch of the publishers. We have 


New Desterm & Browser Character Sets Announced 
Gaelyne Moranec has made available several collections of new character 
sets for use with Matthew Desmonds’s Desferm terminal program and Rod 
Gasson’s Browser utility, Over 200 character sets in all are included, andare 
available via FTP on cenga.uwaterloo.cain the /pub/chm/telecomm directory. 
The filenames to be on the lookout for are: fullset.sf, ibmset, sfx, amiset.sfx, 
chmset.sfx, chmegset.sfx, vt52.sfx, vt102.sfeand chmchrs.sfx (the latter is only 
for use with Browser). 

‘The character sets in the fullset.sfx collection include complete ASCII 
character translations. The chmehr.sfx collection of character sets for 
Browser arean adaption of sets used by QWKRRI28. The original character 
sets were 5 blocks long and unsuitable for use with Browser, since Browser 
uses 9 block character sets. These sets also needed major adjustments so 
that Commodore graphics would be shown correctly when used with 
Browser. 


COMMODORE WORLD 


2R INDUSTRY News 


Threshold Keeps Them Coming 
Announcement of the release of two more new games has arrived from 
Threshold Productions, 

‘The first, “Flummi’s World”, isavery nice platform type game where you 
must help guide a rolling bow! from its starting point to an ending point 
eon the screen. There are little beasties which get in your way 
and bonuses that let you jump higher. You'll build brick steps, walls, and 
many other things on your way to the end of this 30 level game. Retail price 
is listed at US$19.95. 

‘The second release, the “Gangster/Time Traveller” ‘shoot ‘em up 
provides two games with nicely done graphics and one intent: Kill the 
enemy! In “Gangster” you take on the role ofa police officer who must try to 
stop the gangsters from breaking out of prison, escaping in automobiles, 
and from taking hostages ina building. In “Time Traveller”, you become an 
army recruit who warps through time, stopping to shoot down bi-planes, 
helicopters and aliens, Retail price is US$14.95. 

Threshold Productions, 17730 15th NE Suite 
email: tpinfo@eskimo.com). 


somewhe: 


Seattle WA 98155 (internet 


Color 64 Goes Freeware! 

Color 64 V7.37, the last version of the popular C-64 BBS software authored 
by Greg Pfountz, ed by the author to the 
market as freeware. 

This BBS software, with 12 years of work behind it, was declared freely 
redistributable on September 16, 1995. Color 64 V8, by Fred Ogle, remains 
acommercial product. 

Color 64 Freeware is being supported by two BBSes in the US. Timothy 
Allen’s Twilight Zone in Mesa, AZ, can be reached at 602-827-2706, and 
Richard Cunningham's Desert Oasisin Phoenix, AZ, can be reached at 602- 
849-2892. 

Color64V7,37can be obtained via anonymous FTP at thesiteindirect.com 
in the www/wanderer directory. Itmay also be downloaded from the World 
Wide Web at http. //viun.indirect.com/www/wanderer/color.htm. 

For more information, contact wanderer@indirect.com or the support 
BBSes listed above. 


has been rel Commodore 


CommNet Looks To Expand 

Michael Bendure, author of the C-Net DS2 Networking system and 
coordinator of CommNet, recently announced the 64/128 BBS network's 
plan to expand to support virtually every popular Commodore BBS system 
with networking capabilities. 


Issue 11 


At present, C-Net 64 DS2 V2.0,2.5, and 3.0, Image Vi.2a, C-Net128 v6.0 
systems are supported by the 70-site network. In the interim, CommNet 
works by joining the 5 networks supported by these BBS systems into one 
through the use of specialized gateways, but there is work in progress to 
develop a set of network standards to be used on all supported systems. 
ops of C*Base 64, Color 64, Color 128, Omni 128 and other network- 
capable BBSes are invited to contact the CommNet organizers to provide 
input on the project, and to submit their network packet system for 
incorporation into the final structure. 

Interested sysopsshould contact Michael Bendureat 614-788-8568 (voice), 
614-522-6563 (CygnusX-IBBS) or mbendure@intinet.com (e-mail). 


Commodore Internet Connection 

Daniel Dallmann has recently announced the availability of an Internet 
“demo” which he has written and released. The program is apparently 
capable of TCP/IP and SLIP, protocols used by systems connected directly 
connected to the Internet service providers. While not a complete 
application, the demo program displays that our Commodore 64's are 
indeed capable of direct internet connection. 

‘The demo programis available for download via anonymous FTP at fip:/ 
/131.188.190.131/pub/c64, and requires a modified user port RS-232 
interface. Details of the interface can be found in the Commodore FAQ, 
maintained by Jim Brain. ‘To obtain a copy of the FAQ, send email to: 
brain@mail.msen.com with a subject of MAILSERVE (all uppercase),and 
the following three lines (all lowercase) as the body of the message: 


send faq.p 
help 
quit 


GE Seeks Buyer For GEnie Online Service 

Rumors circulated early in November that General Electric was looking for 
a buyer for its GEnie online service. According to Doug Wolford, a 
spokesman for GE, therumorsappeared tohave been started by ajournalist 
writing in the Washington Post, surmising that the logical step is to sell its 
onlineservice. Four daysafter Wolford’s comments appearedin a Newsbytes 
News Network story, a follow-up story reported that GEnie had informed 
itsinformation providers, content providers, and development managers, 
as Well as all ofits employees, that the online service was indeed for sale. 
Horace Martin, VP, business development and sourcing and acting 
president, GEnie Online Services, confirmed that GE Information Services 
is working with the investment banking firm.of Allen & Company to 
“identify potential buyers for the company's GEnie online service.” 


AOL Passes 4 Million Members 

Okay, so normally we wouldn't talk about an online network that only 
supports the Macintosh and MS-DOS platforms in our news, but since 
America OnLine, Inc, once operated the Commodore-only Q-Link, we 
thought we'd let everyone know how they'redoing now that they've left for 
“greener pastures. "Citingarecent Odyssey market study, AOL reports that 
it has passed the four million member mark, and is now as large as 
CompuServe and Prodigy combined. Ironically, the company also released 
its first quarter results around the same time, which showed a 250% 


Volume 2, Number 6 t:] 


increase in revenues, but at net loss of $1 ith such a high loss 
after the substantial gainsin revenue, we can only guess that they must have 
kept the same management that ran Q-Link into the ground during its last 
couple of years of operation. 


Commodore CEE GEOS Products 
COMMODO! as taken over distribution of several items for GEOS 
users from their distributors. A few items are new or upgrades; some are 
items that have not beer 

Among the products are TOPDESK, Diveezil DISK 1 (New Tools2, Marker, 
CreatPatt, PattDA, AutoPatta, & over 3 {OS fill patterns), DiveeziDISK2 
(ULTIP ’, geoGLOBE Collection), DweezifDISK3.5 (DweezilLABEL28, 
MYgeoDIARY, geoWORDS), BIG STAMP, GEOS PROGRAMMER'S 
‘VIDE (by Alex Boyce—not the official version from Berkeley 
Softworks), GEOPROGRAMMER HELP, geoJOURNAL MAG. 
COMPENDIUM VOLUME 1, and geoJOURNAL MAC 
COMPENDIUM VOLUME 2. 

For additional information on theseand other Commodore Cee products, 
contact: Jack Vander White, COMMODORE CEE, P.O. Box 232115, 
5823 (email: jack.vanderwhite@cee-64.gigo.com), 


Sacramento, CA 


Accelerator Update 

There have been a couple of changes in the design of the new Super64 CPU 
accelerator series reported on in our las 
been replaced with the 65C816S, a 16-bit version of the 6502 which also 
contains an 8-bit emulation mode. This design change occured just as we 
went to press on Issue 10, and we were unable to get the new information 
into the news before going to press. 

In addition, CMD has announced that the accelerators will now be 
equipped with 128K of fast static RAM, instead of the 64K previously 
advertised. This change will allow the operating s 
into the fast RAM during startup, thus avoiding any slowdowns when 
calling Kernal or BASIC routines. Even the fastest ROM chips jable 
couldn't keep up with the fast processor without adding delay 
ROM chips proved to be just as expensive, 

Several other important design changes have been implemented, but 
details have not been cleared for public release at this time. CMD has, 
however, agreed to provide a sneak preview of the prototype for our next 
issue. Stay tuned... 


sue. The 65C02S processor has 


ystem to be downloaded 


nd 


a) 


ERR o F 
CORRECTIONS 


Issue 10, page 4: There was a typographical error in the email 
address provided for Al anger. The address should have read: 


d04066c @dcfreenet.seflin.lib.fl.us 


Issue 10, page 25: There was an error in the STATUS BYTE 
VALUES given near the bottom right corner of the Serial Bus 
Device Kernal Routine Reference Chart. The value shown for 
Device Not Present is SFF, but should have been $80. 


COMMODORE WORLD 


Just For Starters 


by Stove Vander Arh 


> 


ALITTLE ABOUT PRINTER SELECTION 


When I bought my Commodore 64 over ten 
years ago, that was all bought. No monitor, disk 
drive, or tape drive. I didn’t even buy joysticks; 
Tused ones from my Atari 2600, Over the next 
year or two IT added to my hardware, starting 
with a disk drive. It was years before 1 finally 
unhooked my 64 froma portable TV and attached 
it to a monitor. Along the line, | bought a used 
printer. 1 
it cheap and figured it might come in handy 
someday, 

Idon't remember who I bought that Okimate 
printer from, with its waxy printouts and the 
horrendous paper feed. I do remember what 
happened to the way | used my computer. 
Suddenly, | was a publisher. I created cards, 
letters, and posters using a program on a 
cartridge called Magic Desk and one on a disk 
called Print Shop. Everything came out looking 
so profe 


n’tsurel had any use forit, but got 


jonal and clean! My computer was 
becoming more than a game machine; it w: 
becoming a tool for my creativity. Not long after 
that, [ bought my first copy of GEOS and 
between geoPaint and geoWrite, | could do 
anything | wanted, This kind of power was 
beyond anything | imagined when | bought that 
lone Commodore 64 a few years before. 

Today you would never buy a computer 
without a disk drive. Besides the Commodore, | 
doubt there is a computer around without a 
drive builtin. You won't beable to usea computer 
these days without a monitor. And more and 
more, you simply don’t buy a computer without 
a printer. Computers are no longer just game 
machines; they're productivity tools or in the 


words of a radio commentator | heard, 


COMMODORE WORLD 


& MORE SIMPLE BASIC 


“information appliances.” These types of uses 
require a printer. Because of this, the prices of 
printersarecomingdownbelowanything could 
have dreamed of when I bought my Okimate. 
Back then, a laser printer, ifyou could find such 
a thing in a catalog, cost thousands. The dot 
matrix printer was just making inroads into the 
market, slowly replacing the daisy wheel from 
back in the Stone Age of typewriters. And there 
was no such thing as an ink jet printer. The 
printer you may be looking to buy now will be 
different from the ones I had to choose from, and 
not just in price. Here are some choices you'll 


haveas you consider buyinga printer for your 64 
or 128. 

The snazziest kind of printer youcan g 
laser printer. It will create the neatest printouts 
of any printer and will do it a lot faster than any 
other type. However, most Commodore 
programs don’t have printer drivers to handle a 
laser printer in its high resolution mode. Printer 
drivers are little programs that your software 


isthe 


10 


uses to know how to talk to your printer. For 
most Commodore programs, the driversare built 
rightin; you just have to go into some kind of set- 
up area of the program to specify which kind of 
printer you are using. TI 
comes from; most Commodore programs were 
written quite a few years ago, before anyone 
could have imagined that regular folks like you 
and me might own a laser printer. Since there is 
nowa 


’s where the trouble 


y to add drivers to one of these programs, 
you're out of luck. A few programs have separate 
printer drivers, however. GEOS is a good 
example. As long as someone is around to write 
new drivers when new printers appear on the 
market, you're okay. There areanumber of good 
laser printer drivers for GEOS, If you don’t use 
GEOS, you can still use a laser printer if you 
choose carefully. Some laser printers will emulate 
an Epson F'X-80; pretty much the standard for 
dot matrix printers. But if you're just going to 
make it act like a dot matrix, a laser printer is 
bly more than you need when you consider 
the relatively high cost per page. 

In the last few years, a new type of printer has 
become popular: the ink jet printer. It creates 
printouts which rival those of a laser printer in 
quality. The prices for these printers are very 
reasonable, even for color. Since they're a new 
kind of printer, many Commodore programs 
don't support them direetly, but they will work 
with the standard Epson FX-80 drivers. These 
printer: y quiet and handle paperin single 
sheets, although the cost per page is a bit steep. 


prol 


arevel 


Itisan excellent choice for the Commodore user. 
The standard is still the dot matrix. Ifyou buy 
one which is Epson compatible, it will work with 


Issue 11 


almost any software using the Epson FX-80 printer driver. In fact, that 
Epson FX-80 is the printer all the rest try to act like. You can get a 9-pin 
or 24-pin model, the difference being that the 24-pin has better 
printouts in non-graphic modes. The dot matrix printers are usually 
inexpensive, include a large number of powerful features and handle 
paper quite nicely. 

The fear that many users have, particularly those new to computing, 
is that they will make a wrong choice when it comes to hardware like 
this. When it comes to printers, ifit isn’t Epson compatible, it stands 
a good chance of not working with your software. Don't buy a printer 
because someone is selling it cheap; buy one because it will do what 
youneed it to, If possible, buy anew printer instead of used. And don't 
forget to buy an interface, which is what you need to connect your 
Commodore toa standard printer. Interfaces lable from CMD, 
among other places, 


Back to BASIC 
What do you want to do? Which choice do you want to make? Over the last 
few columns I've talked about using commands for branching or changing 
the program flow. We looked at GOTO, a command which makes the 
program jump to a new line, using IF and THEN to make choices, and 
about creating a good way for users to interact with our program, This 
time, we'll set up a routine which many programmers have used over the 
years that works nicely and is pretty much fool-proof. We'll also look at 
another powerful branching command. 

Let's start with out input routine. I'll 


it out here with some notes, 


1@ REM INPUT ROUTINE 


Refurbished Units & Repair Service ! 
C-64 Refurb, with P/S (No books) $54.95 
C-64 Rofurb. without P/S (No books) 46.95 
1541 Refurb, with cord, serial cable (No books/disks) 64,95 


Monitor Cable, 5-pin DIN to RCA jacks 4.95 
Serial Cable, 6-pin DIN, 6” 8.95 
Commodore Power Supply for C-64 (used, tested) 7.95 
Power Cord for 1541 3.95 
Power Supply for 1541-II 19.95 


Printers/Monitors: We have a limited supply of C-64 
compatible printers and monitors. Write for current list & prices. 
Ribbons: We stock ribbons for most Commodore and C-64 
compatible printers. Write for current list & prices. 


Service: We will repair or replace: 
C-64 (not including P/S) $ 35.00 
1541 $ 45.00 
Service price includes parts and labor. 
Send computer or disk drive with name, 
address, phone #, & describe problem. 
Repair or refurbished replacement will be 
shipped UPS. 

(Please remove any non-Commodore upgrades) 


Commodore Repairs 
Since 1979 
ee eee 

90 Day Warranty 
on all repairs 
and refurbished items. 

a) aw er 
Write for 
unadvertised specials! 


TO ORDER: Send check or money order for the total of your order 
plus $6.00 shipping (Personal checks take 2 weeks to clear). For 
COD orders, add $5.00. We currently do not accept credit cards. 


Unique Services (413) 496-9275 
68 Velma Avenue, Pittsfield, MA 01201 


Alll items subject to availability. Prices subject to change. 
MA residents add 5% sales tax (except for service) 


Volume 2, Number 6 


anf 


(That REM at the beginning of the line makes it a "REMark,” which is 


ignored by the program) 


3@ PRIN 
4 PRINT “2 - DOG” 
5@ PF “3 - FISH" 


OSE YOUR FAVORITE 


PET 


(These last few lines will print a nice menu on the screen, offering three 


numbered choices) 


60 


INPUT “EN 


URN* 


(Whichever number the user presses will be assigned tothe v: 


calling AS) 


TH 


100 PRINT” PLEASE MA 
11% GOTO 60 


N GOT 
=N GOTO 
THEN GOTO 


OR 3 AND PRES 


iableweare 


200 
300 
400 
ANOTHER CHOICE" 


(The reason for these last two lines is that someone might enter some 
number or letter other than 1, 2, or 3. If that happens, the program 


won't find a match with any of our IF 
st they 


through 90. Line 100 will st 


NEW PRC) 


Soe 


Upgrade Chips 
6526, 6567,6569, 6581, 6522, 8502, 
8562, 8500, 8563, 8564, 8721, 8722, 
325302, 390059, 251968 ‘$8.95 
901225, 901226, 901227 $6.95 
251715, 251913, 8580,WD1772 $10.95 
314972-03(C128 ROM Upgrade)$24.95 


Motherboards 
1541 $14.95 
154111 $19.00 
1571 $19.50 
C64 $34.95 
C128 $49.95 
C-128-D $52.50 
1700 REU(512K) Board Only... $17.95 


Floppy Disk Drives 


1541 $64.50 
154411 w/ PS $74.95 
1571 . $89.50 
1581 $69.95 


Diagnostics & Manua 
Commodore Diagnostician: Guide to 
diagnose & fix C64/128/1541 .... $6.95 
CBM C64/128 Dead Test Cartridge 


and Manual $23.50 
C128 Diagnostic Cartridge 
and manual $24.75 


Manuals: MPS 802 & 1230, 1084, 1902, 
1581, 1526, 1571, 801, C64, C128..Call 


Commodore Chips and Pa 


-THEN statements in lines 70 
make another choice and line 


rts 


NEW PAOD CTS) 


Miscellaneous 

1351 Commodore Mouse . $19.95 
Computer Saver 

(C-64 protection system) $14.95 
Printer Port Adapter 

(Any CBM Printer to PC) $24.95 
Monitor Cables Call 
Used Monitors (Low Prices) Call 
1541 Alignment Kit $15.95 
‘SX-64 (2 left in stock) $125.00 


C65 Computer (65/1581 drive) $169.00 
1230 CBM Printer(Citizen120) .. $39.95 
New CBM 3.5°DD disks (50ct) .... $7.95 
MPS1000 Ribbons ( min, 3 boxes) $3,00/box 


C-64 Keyboard $14.95 
C-128 Keyboard (limited Qty) ... $27.50 
C-128D Keyboard $24.95 
SX-64 Keyboard (w/ door) $59.95 


Power Supplies 
C-64 non-repairable .. 
C-64 repairable ..... 


$15.95 
$17.95 


C-64 Heavy Duty (5.2 amps)..... $39.95 
C-128 Heavy Duty (5.2 Amps) .. $39,95 
1750 5.2 amps $39.95 
154111 external 110 volts. $9.95 
1581 external 110 volts $9.95 
1084S Flyback (Phillips) $35.50 
1084-D1 Flyback $35.95 
1084 Flyback (Daewoo) $35.95 
Str54051 for 1802C Monitor....... $12.95 


28 Grove Street, Spring Valley, NY 10977 


Paxtron 914-578-6522» ORDERS 800-595-5534 « FAX 914-624-3239 
CORPORATION Hours: 9-5 pm EST Add $5.00 UPS Charges * MC/Visa 


i] 


COMMODORE WORLD 


continued from previous page 


110 willjump them back to the point in the program where we originally 
asked for input.) 


20@ REM THIS IS WHERE THE PROGRAM GOES IF THE 
USER CHOOSES 1 FOR CAT 
210 PRINT: PRINT: PRINT: PRINT 


(This line ally three commands, all strung together. You can do that 
with BASIC ifyouseparate the commands with the colon. I try not to do this 
too much because it makes the program more difficult to follow, but for 
something like this it works well. All this line does is make the next print 
command happen a few lines lower on the sereen.) 


220 PRINT 
230 GOTO 


“MEOW” 
20 


make 


(This will send the program back to the beginning so the user ca 
another choice.) 
300 REM THIS IS WHERE THE 
USER CHOOSE FOR DOG 
210 PRINT: PRINT: PRINT: PRINT 
320 PRINT “ARF” 
33 GOTO 20 
400 REM THIS IS WHERE THE PROGRAM GOES IF THE 
USER CHOOSES 3 FOR FISH 
410 PRINT: PRINT: PRINT: PRINT 
42@ PRINT “GLUB GLUB” 
43@ GOTO 20 


THE PROGRAM GOES IF 


Notice how each set of commands was pretty much the same, except for the 
actual words we wanted printed on the screen. First, we senta few PRINTS 
to the screen to drop down three lines, put a short message on the screen, 
then jumped back to the beginning. There is another command we can use 
to let us reuse some of our code more than once. We just have to send along 
a snippet of text each time to let it know what to print on the screen. 
we'll create our generic set of commands for responding to our 
user's input: 


20@ REM GENERIC RESPONSE 
21@ PRINT: PRINT: PRINT 
22 PRINT R$ 


(We'll have to set RS to be the correct response text somewhere back in the 
program. More on that in a moment) 


230 RETURN 
That RETURN is important, We're not just going to get to this routine with 


a GOTO this time, We're going to use the command GOSUB instead. 
GOSUB stands for "GO to SUBroutine,” which is a proper computer term, 


COMMODORE WORLD 


12 


for that small section of BASIC commands we just wrote, A GOSUB jumps 
toa new line number just like a GOTO, but a GOSUB also has built into it 
away to get back to wherever it jumped off. That's what the RETURN tells 
it to do, The nifty thing about RETURN is that it doesn’t have its line 
number specified in advance, That means that you can use the sd 
subroutine in several spots in your program and it will jump 
whichever spot it was called from that particular time. 


Here’s how we'll rewrite our program to use the GOSUB command: 


1® REM INPUT ROUTINE USING GOSUB 
20 PRINT “PLEASE CHOOSE YOUR FAVORITE PET 
FROM THIS MENU“ 


30 PRINT “1 - CAT” 

40 PRINT “2 - DOG” 

5@ PRINT “3 - FISH” 

60 INPUT “ENTER 1, 2, OR 3*;AS 
70 IF AS="1" THEN RS$="MEOW" 


(The text variable gets set right here, When we get to the subroutine, the 
variable RS will be all set.) 


80 IF A$="2" THEN RS$="ARF” 

90 IF A$="3" THEN R$="GLUB GLUB" 

10@ PRINT” PLEASE MAKE ANOTHER CHOICE” 
110 GOTO 60 

12@ GOSUB 200 


(This line sends the program off to the subroutine starting with line 200. 
When the RETURN command comes up in line 230, the program will jump 
back to the line after this one, line 130.) 


130 


INPUT "QU: (Y/N) "78S 
(We're going to give the user a chance to exit the program here) 


140 IF S$="Y" 
15@ GOTO 10 


THEN END 


(Note that we're only testing for a “Y,” which would mean that the user 
wants to stop. No matter what else is entered, the program from here goes 
straight back to the beginning) 


Our programs are getting more complicated. But if you've been paying 
attention as we learned new commandsand techniques, you should beable 
to follow along quite easily. There is a consistent logic to programming 
which comes from the fact that computers “think” in extremely literal and 
logical terms. That doesn’t mean that our programs have to look stiff'and 
plain, Next time we'll look at some ways of sprucing things up on the screen. 


5 


Issue 11 


Foreion Exchange 


In the last issue of CV, I introduced you to the 
best graphic program ever available for the 
Commodore 64/128: GoDot. If you just briefly 
scanned that article (“Waiting for Godot"), 1 
would like to suggest that you get the issue and 
read the article through. In this article, we will 
take a quick walk through the basics of the 
program and explore the possibilities GoDot 
offers. 

The program is 
the file “GODOT 
minute (or a few seconds if you're using a 
RAMLink!) as GoDot loads it’s menus and 
modules. The main screen is the starting menu 
screen and is divided into six windows, which 
are anchored in their place. In each of the 
windows you will find labeled buttons, which 
are called gadgets. To activate a gadget, simply 
click on its button, The two top windows are the 
“Install” and “Command” gadgets. These are 
used to load or save the graphic type using the 
corresponding module, redisplay the last 
rendered graphic, and to exit the program. In 
using these loade ‘ou can convert 
different types of g . The “Image 
Information” window contains the largest gadget 
in the main menu, the “Preview” gadget. This 
provides you with a small thumbnail image of 
the graphic you have loaded and are working 
with, Next to the “Preview” window you will find 
all the necessary information about the graphic; 
its name, its source memory format, the 
resolution of the four bit data and the type of the 
data (color or gray). 

The “Screen Controls” window controls the 
rendering process of the current graphic. The 


sy enough to start. Just load 


s you usually do and wait a 


Volume 2, Number 6 


By Joseph Gaul 


SAP 


EO 


WORKING WITH GODOT 


to be displayed (Full or Clip), and with Colors 
you can adjust the number of rendered colors (2 
to 16). There is an additional button which 
controls the graphic resolution of theC64 (Hires/ 
Multi). 

“Color Controls” introduces the Palette with 
its Requester. Requestersin GoDot open upother 
gadgets, which can only be accessed through 
their respective requester. The Palette serves the 
purpose of collecting a new color arrangement 
for current and future work. Display lets you 
view the color changes which your graphic has 
taken on. Ifyou like what you see, Accept them. 
Ifyou don't, Undo'em! You can use the Balance 
gadget to enter an additional requester which 
controls the brightness and contrast of your 
picture. Thisisa very sensitive tooland produces 
excellent results. You can even dither with itand 
alter the screen effects with ordered, pattern, 
and random, 

The “Image Operators” install and activate 
GoDot's many modules, | was going to count 
and list them all until | saw how many there are, 
To take a look at them all for yourself, simply 
open up the file requester and get ready to be 
amazed! To active the installed module, click on 
the Execute button, 


13 


The program disk is filled with graphics in all 
kinds of formats, some of which are the finest 
I've ever seen on a Commodore monitor, The 


graphicofaclownand ofa hawkare classics! You 
can work with these or with your own graphics, 
convert them, overlay them with each other for 
really cool effects and experiment to your hearts 
content! The German manual contains 99 pages 
of super instructions, but someone will have to 
translate this handbook in ordere for US users to 
take advantage ofall the possibilities GoDot has 
to offer, One of the authors has taken on the 
preliminary translation, but it will need some 
revamping before being released. Graphic freaks 
could order the program directly from Germany 
and shouldn't experience problems getting it to 
run, but waiting for the English handbook has 
definite advantages in this ease, 

Almost every month new modules and drivers 
are written for GoDot. The most recent drivers 
are for color bubble jet printers. The results are 
astonishing to say the lea: 

CMD loaned a RAMLink to Arndt Dettke, the 
author of GoDot so that he could work on the 
necessary device drivers and basically test the 
program with state of the art hardware. When 
Arndt called our European office with his test 
results, we could hear his heart pounding over 
the phone! He never expected his program to 
deliver such speed. This was the way GoDot was 
meant to fly! A US distributor should start 
negotiations with the German authors and pick 
up GoDot ASAP! It'sashame that only European 
users have access to this fine program. 


ia) 


COMMODORE WORLD 


A SIMPLE GUIDE 


Disk Drives 


TO 


By Maurice Randall 


In January 1983, | purchased my first 
computer, a Commodore VIC-20, | took it 
home and opened the box with excitement. 
Allthe promotions andadvertising! had sean 
sold me on this computer. 

After connecting everything and hooking 
up my color TV as explained in the manual, | 
was ready. | turned on VIC and It reported 
that it, too, was READY, | set out to see 
what this modern marvel could do, and typed, 
“What is my name?” | guess we hadn't been 
properly introduced yet. VIC thought my 
first name was SYNTAX ERROR! 

As | read the user’s manual, | found out 
that VIC needed tohavea program, and there 
were some programs supplied in the manual 
that | could type in. I did so and discovered 
that VIC could do some neat stuff. All| had 
to do was type [AUN after entering the 
program. | could see where, with some 
knowledge of how this computer operated, | 
would be able to think of many different 
ways to make use of it, 

The next day, | turned on VIC again and 
got that now familiar READY. | typad RUN 


COMMODORE WORLD 


14 


and it once again said READY. What 
happened to that program | had typed in the 
day before? Lo and behold, | had to type it in 
all over again! | found out that the only way, 
VIC couldretain the program was toleave the 
computer turned on, The manual stated that 
a cossette drive was available to store my 
programs on.| bought one, and then only had 
to antar a program once. | could store 
averything on cassette tape and then reload 
it from the cassette. Plus, it kept me from, 
making typing errors once | had a program. 
correctly saved on tape, It was faster than 
typing in the program aver again, Instead of 
taking over a/half hour fowrype In a small 
program, |couldreload the program fromthe 
cassette in 5 or 10 minutes, What a time 
saver thar was! 


Eventually, | needed something 
than the cassette tape drive. | purchas 
Commodore 1541 dis drive and a box 
disks. This 1541 drive was much fast 
the cassette drive. | now had more data 
storage available to me than | would aver 
need, Ordid |? The rest is history. 


Issue 11 


The Most Famous 
Disk Drive Of All Time 

This 1541 disk drive from Commodore has been 
loved by millions, and no doubt has been hated 
byjustasmany. No matter what, the 1541 format 
was and still is the standard used by software 
companies to distribute their work. Every 
Commod eeds to have at least one of 
these drives. | ted users have at least 
two, 

Even though my first 1541 seemed new tome, 
itwasnot new to theindustry. Ithad been around 
for some time, and even the first 1541's were a 
product of time. They were descendants of 
previous disk drives that Commodore produced 
and used with the PEL/CBM series of computers. 
The 1541, though bulkylooking today, wasrather 
compact in size compared to it's predecessors. 

The 1541 continueda tradition ofCommodore 
’s own operating system, Inside the 


inthatithas 


ing System (knownas DOS), the 
can receive a command through the serial 
from the 64 or 128 (or the VIC-20). If the 
id, the 1541 will report back to 
omputer with the results of the command, 
wise it will report an error. There are many 


igh these commands or a combination of 
, the 1541 can be instructed to do things 


CBM 1541-11 


Upon plugging ina 1541 and turning it on, it’s 
ready to go without any complicated installation 
onthe users part. Other computer platforms have 
a new term for this, they call it ‘Plug N Play’, 
Commodore marketing never gave this feature a 
name, it’s just the way we've always done it! 

Since the 1541 contains its own operating 
system as well as a small amount of RAM, a 
program can be written to reside and run within 
the drive. This is normally how a copy-protected 
disk is accessed, Various schemes have been 
employed in order to fool the software pirates, 
and most of those schemes take advantage of the 
drive's programmable features, But by the same 
token, the pirates also use the drive's capabilities 
in order to defeat the copy-protection schemes. 

Perhaps the most useful programmability of 
the 1541 has been in the area of fast loaders; 
routines that are loaded into both the drive and 
the computer in order to speed up the 
communication on theserial port. GEOS operate: 
this way. If this were not possible, then GEOS 
would, never have gained the popularity that it 


1541, But most wei the IBM drives used a 
double-sided disk. The IBM drives had two heads, 
thus allowing both sides ofa double-sided disk to 
be sible. It wasn’t long before 1541 users 
zed they could use double-sided disks, All 
they had to do was flip the disk upside down and 
cut a notch for the write-protect detector. One 
disk could now take the place of two disks. 
Double-sided disks became cheaper, and 
single-sided diskssoon becameextinct.IBMusers a 


rea 


15 


were buying double-sided 5.25 disks in large 
quantities, and so were Commodore users, 


The Most Under-Rated Drive 
The 1571 drive came along when Commodore 
released the new 128. Not only did Commodore 


ofl used mMithOUe faving! to flip them 


over, just like the big boys. 


lique feature, Itcan perfectly 

‘0 be outdone, the designers 

ethedriveemulatethe 

he new C-128/1571 combo 
ofboth worlds. 

ice the 128 had the ability to 


To top it off, s 
bootupinCP/Mmode, Commodoreaddedsome 


additignl capabilities to the 1571. It could read 
from and I write to most ae formats from. ites 


was Send tr those : 
ee af 


Reremba 


seemed leant 
used on the mh Y was. 
designed to operate at a much Care port 
speed than the C- or pooerpatt 


the 128 was operated in 64 mode, the 1571 had to 
slow down to the speed of the 1541. Supposedly, 
compatibili 

The 1571 never really caught on bi; 
software companies still released their soft 
in the 1541 format because the 1571 was able to 
read the single-sided format with no 


was the reason. 


problem, It wouldn't matter which drive 
was being used, only one disk format was 
as the 1571 was, the 
Commodore user could get by without 
ever having to own one, It'sa shame; there 


needed, As advanced 


was no other drive like it on any platform, 


Disks Are Getting Smaller 
Just about the time you would think you 
needed bigger drive to hold bigger disks, 
the disks and the drives get smaller! Along 
came the 1581. It was smaller and so we 
the disks, But those handy little 3.5 inch 
plastic-cased disksactually hold moredata 
than even the larger 5.25 inch double- 
sided disks. 

Commodore wasin the Amig 
and the Amiga’s standard drive was a 3.5 
inch unit that was built into the machine. 


re 


usiness 


Since Commodore already had some 3.5 
inch mechanisms lying around, someone got the 
idea of modifying the DOS from the 1571 to work 
withit. The result wasa nicelittle drive that could 
hold more than double the 1571. 

The IBM community was beginning to see the 


value in 3.5 inch drives also, The 5.25 inch drives 


were beginning to fade in popularity on that 
platform. The 1581 was also given the ability to 
read and write to IBM formatted disks. It'snative 
format, however, was specificto the Commodore. 
It could connect to the serial port just like the 
other drives and communicated just as fast as the 


1571. To theuser, itseemeda little faster because 
theactual diskaccess within the drive was quicker. 

Oddly, the 1581 was never packaged along 
with a computer. When Commodore released 
the 128D, it had a built-in 1571 drive. The 1581 
had to be purchased separately. Many serious 


Commodore users bought one, but it’s suprising 
how many users have never owned one. That has 
tobeblamedon the software companies. Original 
software was still released in the 1541 format. 

The 1581 usesa disk that is considered to bea 
double-density disk. Probably in the early days of 
the 3.5 inch disk, there was not any 
mention ofits density, But the IBM use 
storage, so along 
came the high-density disks. That's where 
Commodore stopped... 


now needed more da 


And CMD Continued 

Commodore must have made a bunch of 
1581's, because long after production 
stopped, they were still shipping units. 
Even after Commodore closed its doo! 
new units could still be found. Someone 
in engineering no doubt thought of 
producing a high-density version of the 
1581. But there were just too many 1581's 
sittingin thewarehouse. [think the pencil 
pushers won. The 1591 never came to be 
(I think that’s what it would have been 
called, it was the only 15x1 number left!) 
It would have been a good drive to have. 


Thanks to Creative Micro Designs, we 
have the 1591 after all. But it’s called something 
else, and it is also much more than the 1591 ever 
would have been. It's the FD-2000. This drive can 
plug into the serial port just like any of the 
mmodore drives and will do just about 
anything a Commodore user needs a drive to do, 


Disk Drive Speed Comparison 

Because disk drives are mechanical devices, differences in the (Disk Operating System) and serial bus communication methods. 
mechanisms used can make abig difference intheirperformance— The Commodore 128 uses a fast serial transfer protocol (in 128 
especially when comparing 5.25 inch mechanisms to 3.5 inch mode) thathas a profound effect on all the devices tested—except 

mechanisms, Other factors in speed include efficiency ofthe DOS the 1541, which has no built-in fast serial routines. 

Drive Speed On C64 Drive Speed On C128 

(or 64 Mode on C128) (in 128 Mode only) 
operation time in seconds ‘operation time in seconds 
LOAD % LOAD 95 
154 block PRG bad 154 block PRG at 
66 6 
SAVE SAVE a 
154blockPRG fF = 154 block PRG 31 
Ee 27 
READ 84 READ fn 
125 block SEQ rs 125 block SEQ 16 
52 12 
WRITE 98 WRITE 3 
125 block SEQ = 125 block SEQ Ss 
40 21 
COMMODORE WORLD 16 Issue 11 


The beauty of it is that it can read and write toa 
1581 disk. 

‘The FD Series drive is actually offered in two 
different models. The other one is known as the 
FD-4000. The main difference is in the drive 
mechanism that is used, The FD-4000 can not 
only use the double-density disks like the 1581 
along with the high-density disks as the 
s, but it can also use an 
enhanced-density, or ED disk. The ED disk can 
hold t s much data as the HD disk and the 
HD disk holds twice that of the DD disk. 
the top of the 
hey are the most 


‘The FD Series drives are re; 
heap inthe computerindustry, 
remarkable and versatile dri 
any computer platform. A disk ean be formatted 
and partitioned in much the same way. An 


es ever made for 


individual partition on an FD formatted disk ean 
simulate any of the popular Commodore disk 
drive formats. You can put 1541, 1571, or 1581 
partitions on the disks, or you can use CMD's 
proprietary native mode partitions. Of course, 
you can have multiple partitions on each disk, 
allowing you to have a mixture of different 
partition types. The only limitation is on the 
amount of disk space available 

One example ofusing the FD drive would be to 
take an inexpensive high-density disk and put 9 
1541 partitions on it. You could then take the 
whole disk copier that CMD supplies, known as 
“MCOPY", and copy nine of your non 
copy-protected 1541 disks to it. The disk could 
cither be used for backup purposes, or you could 
use it for your actual work disk and put your 
original 1541 disks away for safe keeping, IF you 
have several disks that you use on a regular basis, 
you would now only need one disk. 


The Pattern Ends 
You may have noticed that the IBM industry has 
been setting thestageand controlling the types of 
disks we use. We've gone from single-sided to 
double-sided disks. Then we started using 3.5 
inch disks. When CMD introduced the FD dri 
we could use the high-density 3.5 inch disks. 1 
IBM users keep wanting more, and somehow we 
are able to follow along and keep up with them. 
You would think they would also want the ED 
disks, After all, they hold twice as much data as 
the HD disks. On an IBM machine, an HD disk 
willonly hold 1,44 me 
an IBM can be quite larg 


e 


ome of the files usedon 
and the data files that 
can be created can be huge. So, itwould seem that 
the ED disk format would be popular. This just 
tthe case. Software manufacturers steered 
towards the CD-ROMs for their original software. 
Ifthey supply software on disk, it’sin high-density 
format. If they need more than one disk, they do 


Volume 2, Number 6 


so. | don't know if the users aren't interested in 
theED format, ifit'sthe computer manufacturers 
reluctance to equip new machines with the 
mechanisms, orifsoftware companiesaresetting 
the standard. Whatever itis, Loppy drives are out 
and CD-ROMS and huge hard drives are in. Most 
IBM users have one floppy disk d 
Commodore users have three, four, or even more. 

What this has done is made the ED format 
scarce. Itnever took off; the IBM industry sets the 
standard. The companies that manufacture the 


many 


ED mechanisms have all but ceased production 
That means that the FD-4000 is in 
very limited supply and the ED disks are still 
much higher priced than the HD disks, The 
FD-2000 does not suffer from any shortage 


problem. It will be around for a long time to 


of the units: 


come. 
I think we've seen the end of the disk drive 
pattern between computer platforms. To a 


Commodore user, a high-density drive can holda 
tremendous amount of 
and data files tend to be smaller than a typical file 
on another computer platform, we are perfectly 


Since our programs 


happy with a high-density disk, But we also have 
the luxury of the ED disk in an FD-4000, at least 
for those who have already acquired one or are 
planning to. Just think, a single floppy disk that 
can hold four 1581 partitions. It sure is nice. 
What's really amazingis that many people are 
still very 
would think the 1541 would be too old and 
The 
kewise, 


‘ontent with their 1541 drives. You 


541 grew out of it’s 
predecessors, and ery drivesince then 
has been built on the same ideas, only better. It 
would be hard to top the ED Series drives, and 
any serious Commodore user should think about 
owning one. But you still need one of those old 
beloved 1541's! 


primitive toda 


©) 


5 


Disk Drive Specifications & Capacities 


1541 1571 1581 FD-2000 FD-4000 
Controller Type GCR GCR/MFM MFM MFM MFM 
Physical Media Size (inches) 5.25 5.25 35 3.5 3.5 
Media Type SSDD DSDD DSDD DSDD/HD DSDD/HD/ED 
Rotation Speed (RPM) 300 300 300. 300 300 
Heads (disk sides) 1 2 2 2 2 
Cylinders 35 35 80 80 80 
Logical Blocks/Cylinder 17-21 34-42 40 80 160 
Logical Block Size (bytes) 256 256 256 256 256 
Physical Sectors/Cylinder 17-21 34-42 20 20 20/40 
Physical Sector Size (bytes) 256 256 512 12/1024 = 12/1024 
Formatted Capacity (bytes) 174,848 349,696 819,200 1,638,400 3,276,800 
Maximum Blocks 683 1,366 3,200 6,400 12,800 
Maximum Free Blocks 664 1,328 3,160 6,336 12,736 
Overhead Blocks 19 38 40 64 64 
Maximum Files/Directory 144 144 296 5,658 11,347 
Maximum DOS Directories 1 1 27 2,830 5,674 
DOS ID 2A 2A 8D 1H 1H 
DOS Buffers 5 5 8 82 32 
Device Number Switching N/A 8-11 8-11 8-15 8-15 
Bus Protocols IEC IEC/CFS IEC/CFS EC/CFS/JD IEC/CFS/JD 
Microprocessor 6502 6502A 6502A 65C02 65C02 
Clock Speed 4 MHz 2MHz 2MHz 2MHz 4 MHz 
RAM 2K 2K 8K 32K 32K 
ROM 16K 32k 32K 32K 32K 
MS-DOS Format Support NA 360K 720K 720K/1,44M 720K/1.44M 
2.88M 
Options NA N/A N/A Real-Time Real-Time 
Clock Clock 


17 


COMMODORE WORLD 


Commodore Drives 


ommodore has had a long history, 
producing a wide variety of peripherals 
for their popular computer systems. In 
this article, we'll focus on the disk drives making 
up Commodore's 15xx series, mainly intended 
for use with the VIC-20, C-64, and C-128 
computers. [ hope you'll enjoy finding out about 
the various models and how they came about, 
Atthistime, I'dlike to precede this article with 
a brief disclaimer concerning the information 
presented here. | have tried to the best of my 
ability to present the most accurate information 
pertaining to the history of Commodore 
and its products, Most of this 
information has been confirmed, but 
some of the details either have not been, 
or cannot be confirmed at this time. 


Where such information is used in this 
article, I've taken special care in noting it 
assuch. Ifyou haveany information that 
can either confirm or disprove the 
statements presented here, please 
forward these to me by whatever means. 
possible. 


In The Beginning. 
Let us step back in time 
produced disk drives almost since the time they 
introduced their first computer system, the 
Personal Electronic Transactor or PET. Since 
those first computers were aimed at business 
environments, Commodore produced disk drives 
to satisfy the need to store and retrieve large 
amounts of data in an easily accessible and 
economical fashion, Many of those will be 
covered at’ r date, in a separate article on 
PET/CBM Drives. 

Intheearly 1980's Jack Tramiel ofCommodore 
decided that the world was ready fora “computer 
for the masses” and introduced the Commodore 
VIC-20, one of the so called “home computers”. 


Commodore 


Volume 2, Number 6 


Jack estimated that typical home computer buyers. 
would purchase a cassette tape drive unit for 
mass storage. One might say that Jack estimated 
wrong. Soon after the VIC was introduced, 
storage 
‘e that Commodore was “planning” at the 


customers started asking about the di 


dev 
time. 


Caught somewhat off guard, Commodore 
ed to deliver on the promise ofan inexpensive 
disk drive unit for the Commodore VIC-20. The 
result was the Commodore VIC-1540 Floppy Disk 
Drive. The 1540 was the father of the very 


Left stack, top to bottom: SED-100L, 2031LP, 2031, 2031 (ull-height). Right stack, 
top to bottom; 8250, 


8050. 


successful Commodore 15xx disk drive line. 
However, the 1540 drive was itself'a descendant 
of another Commodore drive, which is where we 
begin our tour. 

The Commodore 15xx drive line can trace its 
roots back to the 2040 dual floppy disk drive, 
developed for the PET/CBM line of computer 
systems, Although we won't go into much of the 
detail ofthe 2040 in thisarticle, it wasa dual drive 
unit that was enclosed in a heavy sheet metal 
case, and contained “full height” drive 
mechanisms. The 2040 is one of the earliest drives 
that Commodore produced, and it was mainly 
used with the early PET/CBM line forcomputers. 


18 


The PET/CBM 2041—A Myth? 
Research suggests that the 15x series of drives 
was not created directly from the 2040 disk drive, 
however, but that an intermediate dri 
between the two. This drive i 
Commodore 2041 disk drive. Although no 
confirmed reports of this drive's existence have 
surfaced, Commodore sources note that this 
drive was actually the unit that became the 1540, 
We do know that the Commodore 2041 disk 
drive was pre-announced and was slated to be 
available in mid-1979. Evidently development 
was temporarily scrapped, only to be 
rejuvenated when the demand fora disk. 
drive for the Commodore VIC-20 
swelled. The development of the 2041 
disk drive was then evidently resumed, 
albeit with one important change: the 
unitwould be called the VIC-1540 floppy 
disk drive. 


The VIC-1540 
The 1540 unitutili 
double-density magnetic floppy disks for 
information storage and can store 
168,656 bytes of user data per disk, For 
recording data onto the floppy d 
Commodore-proprietary Group Code Recording 
(GCR) system was used. Although earlier 
Commodore drives were dual drives and used 
full height meachisms enclosed in metal cases, 
the 1540 uses a halt height drive mechanism 
developed by ALI trie Company, LTD., and 
is housed in a durable plastic case measuring 
¥7mm high by 200mm wide by 374mm deep. 
‘The case is off-white in color, and the affixed 
decal contains simplistic white lettering on a 
brown background. In addition, the VIC-1540 
drive differs in its interface to the computer 
system. Earlier drive units used the standard 
IEEE-488 parallel bus to communicate with the 


COMMODORE WORLD 


computer system, but the 1540 broke with that 
tradition and implemented anew serial bus (also 
called IEC bus) interface, Why the drive uses this 
bus i 


interesting story in itself, A noted 
Commodore authority, Jim Butterfield, related 
the details of this change to me: 

“Asyouknow, thefirst Commodore computers 
used the IEEE bus to connect to peripherals such 
asdiskand printer. lunderstand that these [cables 
for the IEEE-488 bus] were available only from 
one source: Belden cables 
Commodore's computer 
of stock on such cables (mil 
knows?) In any case, Commodore was in quite a 
fix: they made computers and disk drives, but 
couldn't hook ‘em together! So [ack] Tramiel 
issued the order: ‘On our next computer, get off 
thatbus. Makeitacableanyonecanmant 
And so, starting with the VIC- 20 the serial bus 
was born, It was intended to be just as fast 
as the IEEE- 488 it replaced.” 

‘Thestory mighthaveendedthere,except 
anyone who has ever used a 15xx series 
driveknowstheycanbeasslowasmolasses 
when loading data. How could this be? Jim 
Butterfield explains: 

‘Technically, the idea was sound: the 
6522 VIA chip in the VIC-20 and the 1540 
has a ‘shift register’ circuit that, if tickled 
with the right signals (data and clock) will 
cheerfully collect 8 bits ofdata without any 
help from the CPU. At that time, it would 
signal that it had a byte to be collected, and 


A couple of years into 


areer, Belden went out 


ary contract? who 


acture.” 


the processor would do so, using an 
automatic handshake built into the 6522 
to trigger the next incoming byte. Things 
worked in a similar way outgoing from the 
computer, too. However, we early PET/CBM 
freaks knew from playing music using the 6522 
chip that there was something wrong with the 
6522's shift register: it interfered with other 
function: ‘turn off the music before 
you do anything else’, 
“The Commodore engineers, who only made 
the chip, didn’t know this until they got into final 
checkout of the VIC-20, By this time, the VIC-20 
board was in manufacture. A new chip could be 
designed in a few months (yes, the sili 
had application notes about the problem, long 
since), but it was TOO LAT 
“A major software rewrite had to take place 
that changed the VIC-20 (and the 1540 disk drive) 
into a ‘bit-catcher’ rather than a ‘character- 
catcher’, Itcalled for eight times as much work on 
the part of the CPU; and unlike the shift register 
plan, there was no timing/handshake slack time. 
The whole thing slowed down by a factor of 
approximately 5 to 6 [times].” 


hherule 


con guys 


Volume 2, Number 6 


So, Commodore started out the drive series 
with a significant speed handicap, which we will 
see them perpetuate through many models in 
this series. 

To create the disk operating system for the 
VIC-1540 drive, Commodore used its PET/CBM 
drive DOS code as a 
support for a second drive unit. In addition, the 


base and striped out the 


IEEE-488 communications code was removedand 
replaced with support for the new Commodore 
serial bus. With these changes, Commodore 
created a new DOS revision that would become 
version 


the base for most of the 15xx line: 


The VIC/CBM 1541 

The most popular (and most common) drive in 
the Commodore 15xx series is undoubtedly the 
1541, which was produced in a number of 
permutations over theyears. attempt tobrielly 


Lefistack, top to bottom: 1541 (Alps), 1541 (Newtronics), 1541 (Newtronics), 
VIC-1541, Right stack, top to bottom: 1541C (Newtronics), 15410 
(Nwtronics), 1541C (Alps), 8250LP. 


explain the differences between the various 
versions. 

The 1541 disk drive unit was introduced with 
tem. The first 
version of this drive, the original 1541, was 


the Commodore 64 computer sy: 


physically equivalent to a 1540, and differs only 
in the DOS code used inside the unit. Again, the 
version is 2.6, but changes are apparent. Let us 

again turn to Jim Butterfield for explaination: 
“When the Commodore 64 came out, the 
problem VIA 6522 chip in the VIC-20 had been 
replaced by the CIA 6526. This did not have the 
shift register problem which had caused trouble 
on the VIC-20, and at that time it would have 
been possible to restore plan 1, a fast serial bus. 
Note that this would have called fora redesign of 
the 1540 disk drive, which also used a VIA. 
best I can estimate—and an article in the IEEE 
Spectrum magazine supports this—the matter 
was discussed within Commodore, and it was 
decided that VIC-20 compatibility was more 
s s the prospect 


important than dis! 


19 


of a 1541 redesign was an important part of the 
decision, since current inventories needed to be 
taken into account. But to keep the Commodore 
as a ‘bit-banger 


* anew problem arose. 


The higher-resolution screen of the 64 (as 
compared to the VIC-20) could not be supported 
without stopping the CPU every once in a while. 
To be exact: every 8 screen raster lines (each line 
of text), the CPU had to be put into a WAIT 
condition for 42 microseconds, so as to allow the 
next line of screen text 


nd color nybbles to be 
swept into the chip.(More time would be needed 
if sprites were being used), But the bits were 


coming in on the serial bus faster than that: a bit 


would come in about every 20 microseconds! So 


the poor CPU, frozen for longer than that, would 
bits completely! Commodore's 
solution was to slow down the serial bus even 
more. That’s why the VIC-20 has a faster serial 
bus than the 64, even though the 64 was 
capable, technically, of running many 
times faster,” 

So, as Mr, Butterfield explained, the 
1541 DOS code was patched to send bits to 
peed. Since VIC- 
vantage of the full 
ransfer speed, two special 
user commands (Ul+ and Ul-) were added 
tothe DOS toallow software control of the 
transfer speed. In typical Commodore 
tradition, UF speeds up the transfer speed 
\s, While Ul+ slows it down. The drive 


miss some set 


slow 


the computes 
20 users could take 
maximum data 


25% 


powered up in Ul mode, 

So, the 1541 was basically a kludge to 
the 1540toallow thedrivetowork with the 
newmachine. The firstunits were off-white 
in color, most likely an effort to deplete existing 
1540 case stock, while later units sport a brown 
case that matches the Commodore 64 computer. 
alsevolved fromthe basiewhite-on-brown, 
1540, to the 
multicolored decal present on the later units, 
Internally, the drive electronics went through 
humerous revisions, and the mechanism 
underwent a chang 

The early 1541 d ame ALPS 
drive mechanism as found in the 1540, 
nism is easily spotted because the closer 
nism of the drive is of the “push-down” 
type, where a user inserts a disk, and the pushes 
down on the drive door. To release the disk, the 
user pushes in on the closed door, This drive had 
numerousoverheatingand mechanical problems, 


similar to the one of the 


as well, 


ves used the 


so Commodore eventually formedajoint venture 
with a company called Mitsumi Electric 
Company, LTD. The joint venture was named 
‘ewtronics Company, LTD.,andits sole purpose 
to produce a cheaper and more reliabledrive 


COMMODORE WORLD 


mechanism. These newer units are distinguished 
a“turn-down" levercloser. The 
id turns the lever to engage 
the unit. Returning the lever to the open position 
frees the disk for removal. These drives were 
indeed better, although both versions suffered 
overheating to some extent 

‘The Commodore $X-64 portable system also 
made use of a (built-in) 1541 disk drive unit. 


bythe presence of 


user inserts a di 


Commodore would sue them. Needless to say, 
Chinon cut CBM a deal on mechanisms, and the 
1541-II was born. 

With this drive, Commodore changed from 
using an internal power supply to supplying 
powerviaanexternal powersupply “brick”. With 
the power supply now located outside the drive 
case, the drive shrunk in size to 77mm high by 
184mm wide by 256mm deep, As with the 1541 


Although this unit has no unique 
model number, it could be 
purchased separately to upgrade 
the 8) 
DX-64 portable, Thisupgrade was 
made possible by removing the 
plastic compartment above the 
lower drive and installing the 


4 into a double drive 


second drive unit in its place. 

‘The next version of the 1541 to 
be released was the 1541C disk 
which was introduced with 


2 epen VIC-1540. 
the Commodore 64C. This model 


Left stack, top to bottom: 2031, 2031 LP, Right stack, top to bottom: VIC-1541, 


shares the same physical dimensions of the 1541 
drives, but is housed in a case color coordinated 
with the C-64C unit. Internally, this was the first 
15xx series drive to fe: 
which could be used to alley 
“head knock” problem. This problem, present on 
alloftheprevious Commodoredrives, was caused 
by the drive not knowing where track one was on 
thedisk. The DOS compensated by stepping back 
the head the ma 
‘on the disk, thus ensuring that it would reach 
track one. Ifthe head was anywhere but at the end 
ofthe disk, head banging would occuras the head 
reached the track one stop and the software tried 
to continue stepping the head. Interestingly 
although early 1541C units contained a DO: 
patch (a toutilize 
the 
forced Commodore to make this sensor and the 


track one sensor, 
ate the dreaded 


ure 


imum number of tracks present 


in, noversion number chan 


sor, undisclosed compatability problems 


DOS patch optional on most versions of the 
1541C. Later units contained no sensor at all. For 
units with the drive sensor, users could cut a 
jumper on the circuit board to enable it. 

At this time it is important to also mention 
the 1542 floppy disk drive. Basically a 1541 ina 
charcoal gray case (color matched to the 
Commodore 264 series of computers), this drive 
s pre-announced, but may not been 
actually produced, 

‘The last drive in the 1541 series is the 1541-1 
disk drive. This unit was the result of a possible 
lawsuit. At the time, Commodore found out that 
a company called Chinon was developing 
Commodore drive mechanisms for the clone 
ng Commodore. CBM 
asked Chinon either to give them a good deal, or 


Wi 


market and was undersel 


Volume 2, Number 6 


there are two versions of the 1541-II drive. One 
has a deep “turn-down” lever that hits a landing 
atthe top ofthe front bezel (Chinon mechanism), 
while the other has a shallow lever that has no 
such external landing to rest against (Newtronics 
mechanism). 


The CBM 1551 
The 1551 was an “enhanced” 1541 for the 


Commodore 264 computers Although 


DanenessestiebtLt et a 


Top to bottom; 1541-1 (Newtronics), 1541-1 (Chinon), the 
rather rare 1570, 


much of this unit is identical to the 1541, this 
drive did differ in some respects. Colored charcoal 
gray tomatch the computers, the 1551 interfaced 
to the Commodore Plus/4 and C16 via a special 
parallelinterface cable. Thisarrangementallowed 


20 


the unit to transfer data 4 to S times faster than 
the 1541, but was only usable on the 
The version of the DOS in this unit i 
although the DOS is changed subst 
‘ommodate the parallel interf 
numerous enhancements in the drive DOS 
Research suggests that the 1551 drives camew 
both ALPS and Newtronics drive mechanisms. 
Unlike earlier 15xx drives, of which up to4 could 
be attached to a computer, only two 1551 units 
could be hooked up to a 264 series computer, 
During the drive unit's development, 
prerelease documentation referred to this drive 
as the SFS-481 Fast Disk Drive (SES probably 
stands for Super Fast System, or something 
similar). This drive gathered many nicknames 
during its development, including TED Dis! 
(TED stands for Text Editing Device and this 
name pays homage to the original 1540 being 
called the VIC-1540), the Kennedy Drive, or 
Kennedy ‘Technology Disk (KDisk). The latter 
two suggest a play on the name TED Disk, and 
refer to Ted Kennedy, the US Congressman. 
(What that says about the drive I have no idea.) 
Ironically, this drive is a rarity in the United 
States, as almost all of the production units were 
manufactured for the European community, 


The CBM 1571 

‘The next drive in Commodore's drive evolution 
is the original 1571 drive, which ushered in anew 
case style, 
styling of the Commodore 128 computer, The 
computer which this drive was introduced with, 
This drive is, in some respects, the most 
complicated drive ever 
manufactured. 

The 1571 unit can function in one of two 
modes. One mode, called 1541 mode, causes the 
unit to behave just like a 1541 drive, complete 
with DOS 2. d the idiosyncrasies of the 1541 
drive. The second mode is called 1571, or native 
mode, where the drive allows data storage on 


rhe slim refined case matched the 


Commodore 


both sides of the floppy disk. This increases the 
storage capacity from 170 kilobytes to 340 
kilobytes. 

The 1571also has hardware and firmware that 
allowitto read and write any number of single- or 
double-sided Modified Frequency Modulation 
(MEM) encoded disk formats, included so that 
the drive could be used with the Commodore 
128's CP/M mode to read CP/M disks made for 
other computer systems. The MEM recording 
system bears special mention since it is the first 
time since the production of the Commodore 8" 
$280 floppy disk drives (which could read IBM 8" 
floppy disks) that Commodore supported an 
industry standard disk format. 


COMMODORE WORLD 


Whilein native mode, the 1571 utilizes version 
3.0 of the DOS code, which is built off the 1551 
DOS code. This may seem acceptable, since 
Commodore finally changed the ver 
Commodore had already issued version 3.0 of 
DOS with the 8280 8" PET/CBM floppy drive 
andthe D9060and D9090 PET/CBM hard drives. 
‘The drive ROMs were not sim 

‘The various 1571 drives manufactured by 
Commodore made use of drive mechanisms by 
both Newtronics and ALPS. Unlike the 1541 
model, however, the differences between the 
ms isn't immediately obvious, as both 
tch en 


sion, but 


in any way. 


mechani 
use a “turn-down’ 

With the 1571 drive, Commodore finally 
corrected the data transfer speed problems 
present in the 15xx series by introducing “burst” 
loading. Although touted as a new development, 
this enhancement merely utilized the original 
plan of performing hardware bit transfers that 
were developed for the 1541 disk driv 

Commodore had also created a single-sided 
version of the 1571, dubbed as the CBM 1570 
disk drive. This unit, featuringa 1541C style case 
and single-sided drive mechanism, contained the 
same DOS version number, and could operate in 
burst mode just like the 1571. 

With respect to the 1570 and 1571, I’ve been 
unable to determine which was released first,and 
how much time there was between the release of 
the two drives. There is some speculation that the 
1570 may have been released to accompany the 
early C128's in Europe (where no FCC approval 
was needed) while Commodore was resolving 
some final problems with the ROM code needed 
for the full 1571. While the only 1570 drives I've 
encountered contain ALPS drive mechanisms, it 
is believed that 1570 drives with Newtronics 
mechanisms were also produced. 

As Commodore prepared to release the 12 
acost reduced version of the 157 Lwas er 
inclusion as an internal dri 
Although the mechanism differs from the older 
external 1571, the drives are functionally 
equivalent. There are two names by which the 
128D'sinternal 1571 are identified; some referto 
it as the 1571D, while others refer to it as the 
15S7ICR. 

Oddly enough, Commodore designed a new 
external 1571 which used the same mechanism, 
and probably had similar electronics, and this 
project was referred to by those working on it as 
the 1571CR. It appears that this drive was to be 
the 1571-II drive, whi lly 
with a smaller case and drive mec! 


gement system. 


his bas 71 drive 


anism and a 
1541-II external power supply. While some 
reports claim this unit exists in larger quantities 
in Europe, sources from within the late 


Volume 2, Number 6 


Commodore Engineering department claim that 
the design was never produced. 
Commodore also worked on creating a 
disk drive, which was a dual drive version of the 
1571 disk drive unit, The project was never 


completed, however, and thus the 1572 wasnever 
jure 


produced. A concern over power supply 
problems and DOS code bugs kept this drive 
from ever reaching the market. 


The CBM 1581 
‘The last in the line of drives produced by 
Commodore for 8-bit users was the 1581 3.5" 
71 drive differed 


disk drive. Just as the 1 


substantially from previous drives, the 1581 was 
also a major departure from all the previous 


) disk drives. For the 


Commodore (non-Amig 


Top to bottom: CMD FD-4000, two 1581's, CMD HD-20, 
1571 (Alps), 1571 (Newtronics). 


first time, Commodore built a 3.5" drive unit, 
using a standard IBM drive mechanism, and 
ndard MFM recording 
format for the disk media. To shield users from 
or differences, Commodore manipulated the 
DOS code in the drive extensively to create the 
illusion ofa single-sided, 256-bytesector drive;in 


supported the IBM st 


reality, the disk drive mechanism employed was 


double-sided, and had 512-byte sectors. 

This drive shared the same “burst” loading 
capabilities of the 1571 drive units, and could 
store 802,640 bytes of user data. The physical 
dimension of the unit are 63mm high by 140mm 
wide by 230 mm deep. This unit was only 


21 


manufactured with an external power supply 
identical to the ones used on the 1541-1] (and 
planned for 1571-1). 

Three more 3.5" disk drive units were in the 
works at Commodore at one time or another, 
One of these was to be installed internally in a 
computer system often referred to as the C65 or 
C-64DX. The Commodore C65 was never placed 
into full production, how and I'm una 
of whether the drive was ever formally named, 
Some call it the 1581D drive, making the 1571D. 
logy, while others refer to this unit as the C65 
drive, as this drive is substantially different from 
the 1581 unit. 

This internal drive used a cost reduced version 
of the 1581 drive mechanism. However, unlike 
the 157 LD (which shared the same DOS code as 
the 1571) this unit contained a DOS that was 
pled from the Commodore 8250 LP IEEE 
drive, version 2.7, In addition to the DOS base 
code switch, this drive avoided the speed 
limitations in the 15xx line by increasing the 
transfer rate between disk and computer to a 
maximum of 50K bits per second, compared to 
4800 bits per second for the 1541 drive. The most 
interesting aspect of this drive is that it has NO 
microprocessor of its own, All previous drives 


are 


contained at least one CPU, and the drives prior 
to the 1540 contained two. In comparison, this 
driveshareda CPU with theC65 computersystem. 

Anexternal drivew 


so planned forthe C65, 
though again, I'm not aware of a model number. 
This optional external 3.5" disk drive was to use 
a special disk drive interface plugged into a 
dedicated port on the rear of the C65, and was to 
transfer data as fast as a standard IBM floppy 
drive—slightly slower than the internal drive, 
So, what was the third drive? This one is a 
recent discovery, and was also part of 
Commodore's ongoing engineering efforts in 
finding new ways to market their 8-bit line. CMD. 
recently obtained and then sold a one-of-a-kind 
European-style 128) computer, the plastic 
portable 128 that used the standard PAL version 
of the 128 motherboard combined with a 
standard 1 drive. But this unit had a 
differerence—the front panel openin; 


had been 
made for a 3.5" drive instead. Inside, the new 
owner found a drive similar to the 1581, but the 
DOS ROM clearly identified it as. a 1563! 


Vl Be Back... 

As you can see, Commodore disk drives have a 
rich history. It's been difficult to document the 
exact progression of drives over the years, but 
we've a lot more information. Watch for details 
in future issues! 


%) 


COMMODORE WORLD 


Nbtes Ov) | Soe Series Drives 


2 excessTion of 


a &SC2 saath Beat val Ta The one, 


Tre Osi ec CPU in Ea Tre at As sTaTed ear 
sed ap CPU, ond Th PU 


6 unknown 


in The edlernul COS dre 


\s4o 
ALS 


brown while, dex 


ATs ore Wased wn 0fS-while plate aises With The 
4 eyiTain an ALPS mechanism WTernully, 
all eoyaTatiy Tree rated ceo keued revision, Ackauwd The 
“wg bowed because WP aners alevsT all of The deive's length 

Tre 1 SHC 0S abe coAfuny a 


IT aTTomateally bad a S 


won) 
Eran disk upon 
deve WoAS mp Te a sUoroTTne aT 
The ceséT moTwe. The ale There 


ae 0 CLOCK an} IATA VE 


nw on Then store * 


The high at Luni, 


AT UAT wilh wear Alo 

We Slenuere length To | 
ype Ta The x anions wie lauds a SR Sie and exeotTes 
The Commabkire, « comypition never used This GedTure, and some 
muchines These lines runtomly high 50 
Commradore, removed Tr ter ROW) revisions. 


early 1 SU 


and Then 


wo & 
Tis 


ake \wus also version. 


1S) UnkenseaT 


wuny 
orignvally produced willy The 5 
While case and decal Gave | sue wel 1D chang d To S41 By 
and The same ALPS mehunism in The | SHC, Subsea eat 
mols spotted a GY cle evildhed brown case, a new eniPalored 
Seca, and cea kT teowed and DOS ROM oo! ns, The ALPS 
Fray | ASAT The end of 1 ASH, when 


5 pr (Ae) ie 


muchas was used 


Salons cirelT lund revisions ure Kony To exsTt 


1succeel The 


The 


used 


wilh 


The ‘wag bad’, us 

1 SY C.Gs0uld 

ALPS mechanism) 
STi The | 


only work 


SYCCOI bau 
fuwd becuse T 
rin est 
To The 1SUCCUS 
| ALPS mednarison 
SRawlnmies mechunisny 
Reevisery 0€ The shorl toed Tal | 
Tere) The | S41 A toad (Sumper 


THY 2-Cl 


BSTUUGS 


Termed The S1SUIA CQ, 


Volume 2, Number 6 


The Camwok 
KileboyTe. coms. 
5 PEVISONS. 
Tre Silene 


isi 


The other qre 

Leh ae 
sel Tothe | S4C 

Each revs i 


mechanism, 


The. atTalocal” ook 


10S V2.6, ond aT 
anime bug 

The base 1 S41 
(S41 was wTrokeed 


21 S41 we 


sped The MC predin 


ISULSX 
This deve The “SXGY, Uses muny 
components, DboumeaTanon suggests only APLS wedeaions 
Miized, ATrough This drive uses a Tard | S41 
od The. eom as wit is 
Tors WwATTen 99 
he 1 SUC 
weiling a 
ead, we i fe 
Mais anomaly Usually can, 
incompanbitily reports exsT, Researcly iT 
align eAT problems as The cause 


only seen in (S41 


no prvblens, BOT 
rea blames deve, 
Loe These. nampa 


med Thal, as o 


ven WAT 


e=x-1) 

To our Knowledge, This dnve y 
United States, We ‘wow Te 
use some | sui 
Is4ie AT nue, 
was ins 

Repals a 1531 
mmechuniom However, The | S31 
Rew secon The anSenitin wil hus un ALP 
mechunine “Since The ALPS To Mawlironics swith occurred aT 
The en} of | ABU, dees WiTh The ALPS mechanisny are very 
care Sins, 


s only prodveed oTTside. of The 
Mil a big seller, ond 4 

Miized Whe 
is unkown, BUT 


Ty 
Evers Even 


tre 0S purl 


Rs 


wou 


a) dope a 
wo 


Isle 
AtTWwax cram The 1 S41, This 
4, drive, PLL SUL Cun 


mechunisey be 


villy slifed as an uparae 


i SU 


cosa Te 
igh 

iT enable” The sensor The User aul enable’ The i sensor by om WG 

suppor WT aT alk The veluson 06 The 


ine rentiae 
“Trak | 2d YET onstver revision o€ The | S4| 


senor eecess 


BY DSDYYS-Ol Castuins The Trak | 


The 1 S413 bard, 


sense lose. Teaned 


acomwnsated Two S Wo gle. 


ound coTums a swigle sucker 


COMMODORE WORLD 


Volume 2, Number 6 


To azomwnlute a 16 Kicozte ROM, Tho Tro Kiet 


DOS seqmests were wiilTen on a single 0S ROM Sr 
boaard, . 
AW is Wleresiing To eile Thal The | SUL C ceoiT toxard wus 
wn peoation betore The | S41 C was prol 
| 88 


5 


1. Prwever, The 
S ROM evel was o8l yal ahasted on The ciroiT board, 
0 ~ paths pron To The lien of The 1 S41 C 
WA, STandand | SUL Unis were shipped wilh This bord, boT 
Will Tre od double QOM«. To alg Te Two ROM ST The sv 
sxket on The credT baud, a smull pigg souk bound wus produce 
| wwkel ¥ASROSU. 
\hen The 1 S41 C it was Snully shipped, a new OOS 
| ROW with speed and perSonmance enhuncemesls Was 2sTallet, 
port umber 251 A6S-Cl. Then afer numer amplaals 
deol ampanbilTy problems an} other annerns, Commndive created 
a new ROW) revision, purT mumber 251 468-02. Rearding To 
| dacummssTallon This range acauered on QeamberS; | 186. 
With The Wiirohuation of This new ROM, Corwnkre Sinully 
| coneded The Gel Thal The nGamnus ‘save wilh ceplae’ bus exsTed 
| This bus 1 The, 
cakes pveseAT 09 all Sees Sra The | SUC up To Ths revson 
of The | S41 C, beanse The bug wos 
re. Sal Seve: 
The swe deve 1 SHC 
We does nat imply The exsTene 
STaTed above, The (S410 case wus To wawedite 
| défereaQ side baud and SeZereAT mechanisms, soThs opdel ad 
| have alos? anything inside. 


of The 


1 Su) -N 

As The | S41 -W 3.eZered physaully < 
Seves, The roi bod used in This 3 ered as Well, u 
PUB B4CSTS, a asl redved bow pede | S44 | = bow 
Aad, Willy The new ceeiT baad, a new revision of The | 6 Vicoge 
DOS ROM used The [SGC wes created, por 

251 463-03. 


a The preven | SUI 


1$70 

Even TWh The version 0€ O05 enka nthe | S7C is 3.CThere 
are Krowe imompalbilTes beTWween WT ad The fT ware wriTTen 
So The | ST deve. Wis oT clear why The | S7C was pradced, 
Some cepotls sugcesT Thal The 1571 de 
Lor proton, ond The Comwadve | 22 v 
delayed. SoThe 1 S70 wos developed us an wiferm andel Other 
sures Cun Thal The wil wus desig 
To Te 1571 
iiToketon. 


fe \was BT yal reudy 


Jus.u ower ast alle 
Which was a sav 


\s 

Aliwough a success€u) drive in Is own righ This deve suSfered 
| some relubilly problems in early cevisims. Although nil anSiemed, 

These unis muy hive The ALPS mechanisms, as ALPS 1 S41 

mechunisms had relubilily problems us well 

The | 571 was a kiudee, 

Demis Surv, Racnite 

The Canmore | 29's CP/M capa 

The use of The Commnbre GY CP/M atirdge wi 

Thwever, Exgnuering bus brawn Te Thal The CP/ 

™ cafTedge only worked with The eurlesT versions of The 

Cammnbore G4, and would never work Wilh The wre amplex 

C128, Work quickly began on WiTermul CP/™ supporl Sor The 

128, and Then The auestion of a deve Sor The until was brouslaT 

up. Managers niteed a hacked up STIS dre on an eng 

desk and mauiewd. \Turs od The engewer hud ehSes The ust 

To read an} rile MFM ented Jisks, 

worked To Whi beave The | $71 

Fprever The (S71 orgnnated, 7 
Rimes sour 


23 


The (S71 and The 
ws Sve. was Taken Son The 
enrorved Te Mize. 


Bowen, Sormrerly of 


NL-20, sored vi 
Tre ROM ak S71 
AN S31 dewe ond The | S41 
Tre <oppy Ssh Fred 
Commie and wsTrumealal in The. develope 0€ The OS ond 
Lor We CL DS ond COS, sTales Teal The origin 
mn 06 The 1ST wast \SUL* 1551 = 1S, 
fen BI C6S4-C3 ROM 9 Tre 1ST wus 
OF ROW | A8G-| B-CF (sure 
(S410). The rew 


3 an The 1 SGC oiles, alewed bude 
nk, ad wold 


Bowen repels Thal only Two sucky doves exist, and Te. 

be bus bureed od Ts iATemul power supply during is 

aT The Wier | 186 Consumer Electors Show, by 
Sunes eeporTs Wa 


e had Tred 


Ok was boned Seay The | 571, and enhurved 
Th Commnbre anvest i 
3 o GMD Se 


“suosire whieh are unlike 


_ develop Tre | S81 COS. 

The | S81 deve is The S57 ot 
meaning daa was boded WTo deve memory un eAfire Track oT 
aT KE anither sefTor of The same Tuck was subsea uedTly 
cea yesTed, The deve wold semyply copy dala Geom Terral menory 
eather Tran acess The disk 

n Me wiles Two sides of SOTrucks of 1C $1 D-bife 
seiTors oFfo a dsk Twever, beause oTher Conmadre deves 

Wile ake Alo The DOS 
WS 


e Canvnbore 657 was never 


Sally developed, “Tre 
ETWis drive werenT 


, ipprecaTed oy Whe. 
Comwenore gerertl public The DRIVE 205 cake was Aeveloped 
by Demis Sarvs unter ote To Commodore, Perhaps The 
esl wyvessive Seat of The wTernul dewe is Ts abitTyTe shure 
Me With The COS CPU. Sarvs ni 
peel of Vt 
PU borne 
appr, O 
Comvoire 65 prsltTypes, Sew shore an eATal DOS ok 
revisor as The ake was changed aloes daily. 
Demis Suvs nites Thal The 32ST LP DOS ok was 
vse To develop This UniT's DOS because TT was The mst sTuble. 
of The DOS revisions produced by Cave, 


vlan wid 
specaizes 4 (S41 


9 


COMMODORE WORLD 


EXPLORING 


THE SERIAL BUS 


KERNAL ROUTINES 


PART 2: USING LOW-LEVEL SERIAL BUS KERNAL ROUTINES 


In the last issue of Commodore World, we began 
covering the Kernal routines used for serial bus 
devie s by providing steps and an example 
program showing how to use high-level routines 
to perform file access, 


Inthisinstallment, we'll learn how fileaccessis 
accomplished using the low-level routines, We'll 
use a program example that has a different 
purpose than the example in the last issue, but as 
you get to know these routines you should easily 
beabletocreate programs that perform mostany 
disk or file operations, 


Opening a File 
Using the low-level commands to open a 


fileisa 


tedious task, and one of the reasons Commodore 
provided the Kernal OPEN routine. However, 
ions when you really feel it’s 
and that's why you're bothering to 


there may be oc 


necessary, 
read this article, 

So you're going to brave doing the open all by 
yourself, but before you make that bigstep, you're 


going to have to make some decisions. Most 
importantly, you're going to have to decide if 
you'll have to access this file with any of the 
high-level Kernal routines, or from BASIC, If'so, 
you'll have to set up information about the file in 
the operating system’s file tables. These tables 


consist of three sets of ten bytes that signify the 


logical file numbers, device numbers, and 
secondary addresses of all open files. The tables 


by Doug Cottow 


are found in different locations in the 64 and 128 
operating systems, as indicated in the chart 
located at the bottom of this page. 

Whenan opened fileis recorded in these tables, 
itis done by placing the appropriate information 
atthesame index pointin each table 


rexample, 
ifa file with a logical file number of 2 is recorded 
inthethird byte ofthe Logical File Number Table, 
then the device number is found at the third byte 
of the Device Number Table, and the secondary 
addressis foundin the third byte ofth 
Address Table. 


econdary 


This brings up the question, “Where should a 


new entry go in the tables?” New entries are 
created at the next unused file entry, starting at 
the first byte of each table. So how do you know 


which “slots” are used, and which are open? The 


operating system hasa reserved variable location 
for this, found at location $98 in both the 64 and 
128 operating systems. Reading this location tells 


you how many files are open, and at the same 

time provides a usable index into the tables. 
Now, let’s say we want to open a file on a 

bles. Our example 


I toasubroutine 


device, and we plan touse the: 


program doesthisby making, 


we've created 


alled ‘tent’, which you can refer to 


while I describe the steps involved. 

The first step required is to make sure there's 
room in the tables for another entry (the tables 
can only hold ten entries, so the Commodore OS 
limits us to having ten files open at any given 


C64/128 Operating System File Tables 


Table Description 
Logical File Number Table 
Device Number Table 
Secondary Address Table 


Volume 2, Number 6 


Commodore 64 
$0259 - $0262 
$0263 - $O26C 
$026D - $0276 


Commodore 128 
$0362 - $036B 
$036C - $0375 
$0376 - $O37F 


24 


time.) Checking the value at $98 tosee ifit's ten or 
greater will provide us with the info we need. 
The next step is to make sure that the logical 
file number we're using doesn’t already exist. 
This can be accomplished via a small loop that 
compares the file number we want to use with 
aturall 
ables are complet 


each of the existing entries. } we can 
skip this step ifthe yempty. 
Once we're certain that the table has room, 
and that our logical file number hasn't been used, 
we can go ahead and and create our entries, using 
the number of files open as an index for writing 
into the tables. Notice that when we store the 
secondary address in table, we must first OR it 
with $60. This is the way table entries for 
secondary addresses are expected to be stored, 
, We're now ready to open the file itself, 


‘The actual open is done by our ‘fopen’ routine, 
which starts at the end of ‘tent’, and this also 
serves as the entry point for opening files without 
usingthe file table. First, we'll clearthe status and 
tell the device to listen (using LISTN), then send 
it the secondary address (via SECND), adjusting 
it first by OR'ing it with $F0 to indicate that we 
want to open a file, 

‘The next step is to send the fileneame. If we 


were opening a command channel, the name 
might not be necessary, so our code checks to see 
if the length of the name is zero. (The only time 
you might use a filename when opening the 
command channel would be to send a command 
usingthe open, suchas you might dowith BASIC, 
i.e, OPEN15,8,15,"10:"). If there is a filename to 
be sent, then CIOUT is used to send each of the 
individual bytes. 

To complete the open operation, we tell the 
device to stop listening via a call to UNLSN. 


COMMODORE WORLD 


Serial Bus Device Kernal Routine Reference Chart 


Kernal Jump Table RAM Calling Parameters Returned Parameters 

Routine Address Vector A Xx .Y A Xx .Y Status Pre-requisites 
SECND $FF93 (65427) n/a SA+S$60' ~ 7 5 = cs ST LISTN 
TKSA $FF96 (65430) n/a SA+$60' —~ ~ * = ST TALK 
ACPTR SFFAS (65445) n/a ~ ~ ~ DATA + + ST TALK,TKSA 
CIOUT SFFA8 (65448) n/a DATA ~ ~ +: + + ST LISTN,SECND 
UNTLK SFFAB (65451) n/a ~ ~ ~ # 2 - ST (TALK,TKSA) 
UNLSN SFFAE (65454) n/a ~ ~ ~ = < - ST (LISTN,SECND) 
LISTN $FFB1 (65457) Wa DEV ~ ~ 2 y 5 ST CLEAR ST 
TALK $FFB4 (65460) na DEV ~ ~ : * 5 ST CLEAR ST 
READSS $FFB7 (65463) n/a 7 ~ ~ STATUS + + SsT* None 
SETLFS SFFBA (65466) n/a LFN DEV SA + + + n/a None 
SETNAM SFFBD (65469) nla FNLEN FNAL FNAH + + + na None 
OPEN SFFCO (65472) $031A (794) ~ ~ ~ ERROR - = C  SETLFS,SETNAM® 
CLOSE $FFC3 (65475) $031C (796) LFN 2 ERROR . a Cc (OPEN (CLRCH)) 
CHKIN $FFC6 (65478) $031E (798) ~ LFN ~ ERROR e : Cc OPEN 
CKOUT $FFC9 (65481) $0320 (800) = LFN ~ ERROR = = Cc OPEN 
CLRCH S$FFCC (65484) $0322 (802) ~ ~ ~ 2 2 + n/a (CHKIN,CKOUT) 
BASIN $FFCF (65487) $0324 (804) ~ ~ os DATA st + ST (OPEN,CHKIN) 
BSOUT $FFD2 (65490) $0326 (806) DATA ~ ~ ERROR + AD ST (OPEN,CKOUT) 
LOAD $FFD5 (65493) [$0330 (816)} LV' (SAL) (SAH) ERROR (EAL) (EAH) .C SETLFS,SETNAM® 
SAVE SFFD8 (65496) [$0332 (818)] SAP®* EAL EAH ERROR : < .C  SETLFS,SETNAM® 
GETIN $FFE4 (65508) $032A (810) ~ ~ ~ DATA A e ST (OPEN,CHKIN) 
CLALL $FFE7 (65511) _ $032C (812) ~ ~ ~ = : + n/a (CHKIN,CKOUT) 
SPIN_SPOUT $FF47 (65351) n/a ~ 7 = 2 + + n/a Ce 
CLOSE_ALL $FF68 (65384) na DEV ~ ~ - = = na None 
SETBNK SFF68 (65384) n/a BA __FNBANK  ~ + + + n/a None 


Reference Chart Notes & Definitions 


SYMBOL DEFINITIONS VARIABLE DEFINITIONS ACCUMULATOR ERROR CODES 
~ No parameter required ne) = Processor Carry Flag $01 Too Many Files 
Register is not preserved during ST STATUS byte ($90) $02 File Open 
operation LFN Logical File Number $03 File Not Open 
+ Register is preserved during SA Secondary Address $04 File Not Found 
operation DEV Device Number $05 Device Not Present 
BA = Bank for LOAD/SAVE/ $06 Not Input File 
NOTES VERIFY (128 only) $07 Not Output File 
1 Add $F0 to SA instead of $60 to LV LOAD/VERIFY Flag $08 Missing Filename 
open file, SEO to close file SAP Starting Address Pointer $09 Illegal Device Number 
2 STATUS byte (ST) is not cleared FNBANK = Bank where filename for $10 Illegal LOAD (past $FEFF) on 128 
unless current device is 2 (RS-232) LOAD/SAVE/VERIFY is 
3  SETBNK also required for 128 stored (128 only) STATUS BYTE VALUES 
4 0 for LOAD (requires address in .X FNLEN = Length of filename in $01 Print Time-out 
and .Y if SA=0, returns ending bytes (0 if no name is $02 Input Time-out 
address in .X and .Y); non-zero for required for an $40 EOF (End Of File) 
VERIFY (address not required) operation) $42 Read past EOF 


5 Pointer to zero page location holding FNAL 
starting address in low byte/high byte FNAH 


= Filename Address Low $80 Device Not Present 
Filename Address High 


format SAL Starting Address Low FILE SECONDARY ADDRESSES 
6 Clear .C (CLC) to set fast serial input, SAH = Starting Address High $00-01 Reserved for LOAD/SAVE 

set .C (SEC) to select fast serial EAL = Ending Address Low $02-0E Input/Output Files 

output EAH = Ending Address High SOF Command Channel 


Volume 2, Number 6 25 COMMODORE WORLD 


Closing Files 
Whenever you're done using a file, it needs to be 
closed. This is probably the easiest task of all, 
unless you're using the file tables. Our example 
program has routines for both situations. The 
‘felose’ routine searches the logical file number 
table for a match with the file number of the file 
you're trying to close. If found, it checks to see if 
itis the last entry in the table, Ifnot, it copies the 
data from the last table entries over the data in 
the table entry you're deleting. The final step is to 
decrement the count of open files in $98. 

The ‘felose’ routine drops down into the ‘clos’ 
routine, which 


also the entry point for closing 
files without using the file table: 
's the status and tells the device to listen (via 
LISTN). Next, OR's the secondary address of the 
file to be closed with $E0, and sends this to the 
devicevi ND. The final step istocall UNLS) 
and the file is closed, 

One warnin, 


This routine 


don’t close command channels 
on a device that has other files open, as this will 
cause ALL FIL! 


S to be closed. 


Reading Data 
Getting bytes from an open file is rather simple 
matter, First, clear the status and then call the 
‘TALK routine to tell the device that it kon 
the serial bus (it’s nice to be in charge of who can 
talk!). Since we're accessing a file that’s already 
open, we need to use the secondary address that 
the filewas opened with, OR itwith § 
it using TKSA. 

Okay, that’s the preparation, and our talker is 
ready to send d 
havearoutine in the main program section called 


60, and send 


1. In our example program, we 
‘read’. This opensa data file that we've previously 
created with the program, reads the data from 
the file, and dis; 
you follow that section of code, you'll see that the 
I by calling ACPTR, which returns one 


that data on the sereen, If 


datais rei 


byte of data in the accumulator (.a). 
e 


Since our 
ample program does a lot of error checking 
(looking for the end offile as well as other errors), 
we've ignored the fact that the data is in the 
accumulator, and focus instead on checking the 
status first. We can get away with this bee: 
know a little trick. You see, both the 64 and 128 
ACPTR routines use memory location $A4 to 
store the data byte temporarily. So after we make 


is valid, we get the byte from that 


ase We 


sure the di 


location, 
‘Tofinish this routine, we call UNTLK to tell the 
device tostop talking after we get to theend ofthe 


file. In our example, we also go ahead and close 


the file, since we're done accessing it 


Writing Data 
While we've already covered writing data to the 
drive in our discussion of opening files, there are 
some differences involved in writing data to an 
already open file. Our example program contains 
aroutinewithin themain program segment called 
. This routine opens a write file using our 
‘tent’ subroutine. 

Once the data file is open 
simila 


essing itis quite 
r to the way we access read files, First, we 
the status byte, then tell the device to listen 
useing LISTN. Since we're about to access a file 
that’salready open, wetake thesecondary address 
it was opened with, OR it with $60, and send it 
with a call to SECND, 

The file is now ready to accept data, which we 


clea 


send using CLOUT. Once we've sent all the dat 


we call UNLSN to stop the drive from listening, 
And in the case of our example, we're done with 
the file, so we close it. 


Command Channel Access 
The command channel 
programs; it servesasa way tosend commands to 
the drive, and it’s also used by the drive to inform 


as two common uses in 


us of errors. Our example program has routines 
imake use of both of these features. 
arly in the main segment of our example 
program, we sendan “Initialize” command tothe 
drive, We do this by setting some parameters, 
and then calling the ‘esend’ subroutine. Sending 
commands toa drive is no different than writing 
data toa write file; we can, however, skip opening 
the file, thus making the routine a bit shorter. 
Likewise, when we read data from the 
command channel to check for DOS errors, it’s 
just like reading from a data file, And again, we 
can skip the open. Our example program does 
this using the ‘cerr’ subroutine, 


Errors & Other Stuff 
Throughout the example program, you'll see a 
number of calls to the ‘serr’ and ‘cerr’ routines, 
which deal with status and command channel 
errors, respectively. There are also several other 
subroutines used in combination with these to 
make the program capable of detecting and 
reporting errors. While all of these are integral to 
proper error detection, it's also important to 
follow how the program flow is affected when an 
errorisdetected. When errors occuraftera LISTN, 
the program must UNLSN the device as part of 
aborting the routine, Likewise, an error detected 
after TALK must causean UNTLK. And, ofcourse, 
all open files have to be closed—if possible. 

In addition to the error routines, there are a 
couple of display routines used. The most 


important of these is ‘primm’, which is a direct 
copy of the print immediate Kernal routine that 
residesin the 128, This allows printing of “in-line” 
messages. Itcan also be omitted in 128 programs 
by substituting calls to the Ke 

There's no doubt that the routines provi 


5 version. 


led 
here can be optimized. But hopefully they'll give 
you a clearer picture of how Kernal low-level 
ser %) 


al bus access routines are used, 


acptr = $ffa5 ; kernal serial char in 
low level drive access example setlfs $£fba ; kernal set lfn, dn, sa 
chrout S£fd2 ; kernal char out 

sorg $2000 : 

:0bj "llexample.o* } start of program 
: variables start jmp main 
1fn =  $b8 } logical file number ; strings 
dev = $ba ; device number t 
sa = $b9 } secondary address iemd byt "i" 
st = $90 } status byte wnam byt "testfile,s,w" 
fnadr $bb ; filename address pointer rnam  .byt “testfile,s,r" 
fnlen =  $b7 ; length of filename endstr .byt 0 
latbl = $0259 } 1fn table ($0362 for 128) : 
dntbl = $0263 ; dev# table ($036c for 128) ; main program 
satbl =  $026d } sa table ($0376 for 128) : , 
listn =  $£fb1 : kernal listen main da #$01 lfn in .a 
secnd =  §f£93 ; kernal sa for listen Idx #508 dev in .x 
unlsn = $ffae ; kernal unlisten ldy #502 sa in .y 
ciout = $£ffa8 } kernal serial char out jsr setlfs and set 
talk = $£fb4 ; kernal talk Hi 
tksa = $££96 ; kernal sa for talk jsr primn ; print immediate 
untlk =  $£fab ; kernal untalk sbyt 147 } clear screen 

Volume 2, Number 6 26 COMMODORE WORLD 


[ sbyt “initializing drive" jsx unlsn jpn aren sevice! 
“byt 13,0 jsr unk } unknown error 
: jmp xit ; jump to end 
; i low byte of address : 
pet ees a Pts + okay, increment 
ida ¢sicmd ; high byte of address cpx sien ; all chars sent? 
sta fnadr+1 store it bne - i no, ‘get next ‘char 
ai calculate length A 
peste ar eceare Panevarovcienae + jsr unlsn ; stop listening 
jer csend call send command routine cle } clear carry 
bee + branch if no error ie > 
jmp serr ; process status error xit bee + ; branch if no error 
, jmp serr } process error 
+ jsr cerr } check cmd channel error + jsr cerr ; Check drive error channel 
bee + } status okay bee + ; status okay 
jmp serr } process status error jmp serr } process error 
7 + lda errflg ; check for drive error 
+ ida errflg } check error beq endw ; exit write if no error 
beq write } no error, branch jsr prnterr + print error 
jsr prnterr ; print error i b eo 
rts } end program endw jsr prim ; print immediate 
: «byt "closing write file" 
} write data file sbyt 13,0 
write jer primm ; print immediate jsr  fclose ; close file 
«byt "opening write file" bee + ; branch if no error 
sbyt 13,0 ; return, end of data jmp serr } process error 
; + jsr cerr ; check for drive error 
ida #<wnam + low byte of name address bee + } branch if no error 
sta fnadr ; store it jmp serr ; process error 
lda #>wnam ; high byte + lida errflg ; check for drive error 
sta fnadr+1 } store it beq read ; skip to read if no error 
lda #rnam-wnam ; calculate length jsr prnterr } print error 
sta fnlen and store rts } abort 
jsr tent } call send command routine p 
; ; read/display data file 
bee + ; branch if no error 7 
jex serr i process status error read jsr primm ; print immediate 
jmp endw i; skip to end sbyt “opening read file" 
; «byt 13,0 
+ jsr cerr ; check cmd channel error ; 
bee + } status okay da #<rnam ; low byte of name 
jsr serr ; process status error sta fnadr } store it 
jmp endw } abort write ida #>xnam ; high byte of address 
z sta fnadr+1 } store it 
+ ida errflg ; get error number lda #endstr-rnam; calculate length 
beq + branch if no error ata fnlen ; and store 
jsr prnterr else print error jsr tent ; call send command routine 
jmp endw } abort write : 
; bec + ; branch if no error 
+ lda #500 } always clear status jer serr } process status error 
sta st + before listn jmp endr ; abort read 
lda dev ; load .a with dev# ; 
jsr listn } tell device to listen + jsr cerr ; check cmd channel error 
bit st ; check status bee + ; status okay 
bpl + } status okay, branch jsr serr } process status error 
jsr nodevl i device not present jmp endr ; abort read 
jmp endw + jump to end 
i + lda errflg ; get drive error number 
1 da sa ; load secondary address beq + ; branch if no error 
ora #$60 + adjust for write jsr prnterr + else print it 
jsr secnd } send sa for listen jmp endr ; abort read 
lda st } load status : 
bpl + } Status okay, continue + jsr prim ; print immediate 
jsr nodev1 ; device not present «byt “reading data" 
jmp endw ; jump to end sbyt 13,0 
str -byt "sample data string" lda #00 ; always clear status 
sbyt $04 ; a carriage return sta st ; before talk 
slen . byt $00 ; end of data ida dev ; load .a with dev# 
; jsr talk } tell device to talk 
+ jsr primn ; print immediate bit st } check status 
«byt "writing data" bpl + ; status okay, branch 
sbyt 13,0 jsr nodevt ; device not present 
jmp end } abort read 
lda #slen-str ; calculate the length H 
sta slen ; and store it + lda sa ; load secondary address 
ldx #$00 ; clear .x ora #$60 j adjust for read 
jsr tksa ; send sa for talk 
- lda str,x ; get char from string lida st ; load status 
jsx ciout j output it bpl rdbyt ; status okay, continue 
ida st } get status jsr nodevt } device not present 
beq + } no error, branch jmp endr ; jump to end 
sta tmpst } save status = ida $a4 + get last byte received 


Volume 2, Number 6 27 COMMODORE WORLD 


jsr 
jsr 
ida 
beq 


cmp 
beq 


sta 
jsr 
jsr 
jmp 
+ ida 
jsr 
jsr 
jsr 
sbyt 
byt 


isr 
bee 

jmp 

+ jer 
bee 

dmp 

+ ida 
beq 

isr 


rts 


tent lda 
beq 
cmp 
bne 


jmp 


A dda 
1dx 
- dex 
bmi 
cmp 
bne 
jmp 


+ ldx 
ida 
sta 
lda 
sta 
ida 
ora 
sta 
inc 


open file 


Peon 


lda 
sta 
Ida 
jar 
bit 
bpl 
jmp 


open. 


ora 
jsr 
ida 
bpl 
jmp 


ida 
beq 
ldy 
- lda 
jsr 
ida 
beq 


chrout 
acptr 
st 


#840 ; 
+ 


tmpst ; 
untlk ; 
unk 
endr ; 


Sad ; 
chrout 7 
untlk ‘ 


primm : 
“closing read 
13,0 


fclose 3 
+ 3 
serr 


cerr i 
+ ; 
serr ; 


errflg : 


prnterr F 


make table entry 


$98 ; 
#50a ; 
+ 
tmf 7 


lin 
$98 


+ 
latbl,x 


exists 


$98 

lin 
latbl,x 
dev 
dntbl,x 
sa 

#560 
satbl,x 
$98 


4$00 
st 
dev 
listn 
st 

+ 
nodevl 


sa 
#S£0 
secnd 
st 

opn 
nodevl 


fnlen 
#500 
(fnadr),y 
ciout 

st 

+ 


Volume 2, Number 6 


output to screen 
get a byte 

get status 

status okay, branch 


end of file? 
yes, then branch 


store status 
untalk device 
unknown error 
jump to end 


yes, get last byte 
and print it 
untalk device 


print immediate 
file* 


close file 
branch if no error 
process error 


check drive for error 
check worked, branch 
process error 


check drive error 
none, branch 
print error 


exit program 


+ get number of open files 


table empty, branch 
compare to 10 


7 mot 10, branch 


error, too many files 


desired lin in .a 
open files in .x 
decrement .x 

no matches, branch 
compare lfn to table 
next compare 

file exists 


get open file index 

get new 1fn 

store lfn in lfn table 
get new dev# 

store dev# in dn table 
get new sa 

or sa with $60 

store sa in sa table 
increment # of open files 


always clear status 
before listn 

load .a with dev# 
tell device to listen 
check status 

okay, branch 

device not present 


load secondary address 
adjust for open 

send sa for listen 
load status 

okay, continue 

device not present 


get length of name 
no name, skip ahead 
zero out .y 

get 1 char from name 
output char to device 
get status 

okay, branch 


28 


jsr unisn ; unlisten device 
ida #$ff ; indicate unknown error 
sec set carry 
rts 7 and exit 
5 iny ; increment index 
cpy fnlen ; all chars sent? 
bne - no, get next char 
+ jsr unisn yes, unlisten 
cle clear carry 
rts and exit 
+ close file (in table) 
fclose lda lfn get lfn 
ldx $98 get number of files open 
- dex dec to use as pointer 
bmi clos none found, exit 
cmp latbl,x ; check for match 
bne - 7 no match, next 
dec $98 + decrement file count 
cpx $98 is entry last in table? 
beq clos yes, branch 
lidy $98 index to last entry 
ida latbl,y move last lfn entry 
sta latbl,x to empty slot 
lda dntbl.y move last dev# entry 
sta dntbl,x to empty slot 
lda satbl,y ; move last sa entry 
sta satbl,x to empty slot 
3 close file 
clos da #$00 ; always clear the status 
sta st 7 before calling listn 
lda dev + load .a with dev# 
jsr listn 7 and call listn 
bit st check status 
bpl + ; okay, branch 
jmp nodevi ; device not present 
+ lda sa ; sa for file 
ora #$e0 7 adjust sa for close 
jsr secnd 3 send sa for listener 
bit st check status 
bpl + okay, branch 
jmp nodevl ; device not present 
+ jsr unisn unlisten device 
cle ; clear carry 
rts ; and exit 
; set status error parameters 
unk lda tmpst ? get status 
and #$0f ; clear upper nibble 
tax ; transfer to x 
lda hex,x 7 get ascii value 
sta unkst+1 ; store it 
lda tmpst 7 get status 
cle 7 clear carry 
isr 7 shift right 
isr 7 until upper 
lsr 7 nibble becomes 
lsr ; lower nibble 
tax ; transfer to x 
ida hex,x ; get ascii value 
sta unkst } store it 
lda #sff 7 unknown error 
sec 7 set carry 
rts 7 exit 
hex «byt *0123456789abcdef’ 
time lda #$01 ; too many files 
sec ; set carry 
rts 7 exit 
exists lda #$03 ; file exists 
sec ; set carry 
rts 7 exit 
nodevt jsr untlk ; tell device to shut-up 
jmp + ; skip unlisten 
nodevl jsr unlsn ; stop device from listening 
+ Ilda #$05 + device not present error 


COMMODORE WORLD 


————— 


error and exit 


set carry she j 
sec ; = : 
rts 7 exit os lda $a4 7; get last byte 
: sta errbuf,x ; and store it 
; display status error ; we 
; : es A lda #$00 ; zero byte | 
serr jsr primm sprint immediate ae ® ; increment index 
wbyt "status error: sta errbuf,x  ; and store it 
sbyt 0 
; > errbuf } get 1st byte of error 
cmp #$01 1 is error too many files? er #$0£ ; convert to value 
PH 2 See Teer palate sta errflg ; store it 
jsx primm ah yes, pri asl ; multiply by 2 ey 
vbyt "too many files" iply by 2 (x4) 
‘byt 13,0 pe errelg ; fad de xs) ; 
; ay. j ; multiply by 2 (x10) 
+ cmp $03 ; is it file exists? ase heeaty iaaHeeeetn 
pay Lees eperterampeatate lda errbuf+1 ; get 2nd byte 
Dee cate = and #$0£ ; convert to value 
wbyt "file exists ora errflg ; or in tens 
: lence yay) sta errflg j and store 
+ cmp #505 is it device not present? ; f 
Sue ; no, then branch jsr untlk ; untalk device 
jsr primn ; yes, print immediate cle 2 elear carry 
wbyt “device not present" rts ; and exi 
Jeet Oe } send command to drive 
+ : own type? : 
eee ; cee Mace eaR es csend lda $00 ; always clear the status 
jsr primm + yes, print immediate sta st i before calling listn 
‘byt “unknown ($” lda dev ; load .a with dev# 
unkst byt $30,$30 jer listn i and call listn 
sbyt *)" bit st } check status 
‘byt 13,0 bpl + 7 okay, branch 
; jmp nodev1 ; device not present 
+ rts 7 exit $ 
z + lda #$6£ ; sa for command channel 
tmpst .byt $00 ; used for temporary status jsr secnd ; send sa for listener 
; bit st + check status 
} print disk command channel error bpl + ; okay, branch 
Fi jmp nogev1 ; device not present 
prnterr ldx #$00 ; zero index ; 
- lda errbuf,x ; get from error buffer + ldy #§00 ; clear .y 
beq + ; branch if end of string = lda (fnadr),y ; get char from command 
jsr chrout } output character jsr ciout 7 output it 
inx 7 increment index ida st ; get status 
bne - } get next character bne + ; error, branch 
+ rts i exit iny ; okay, increment .x 
; cpy fnlen ; all chars sent? 
errbuf buf 256 ; buffer for error msg bne - } no, get next char 
endbuf .byt $00 ; arbitrary end of buffer 7 
errflg byt $00 } error value + jsr unisn ; stop listening 
? cle 
7 read command channel rts 
cerr da #$00 ; always clear the status ; print immediate routine 
sta st ; before calling talk i 
lda dev 7 load .a with dev# primm pha save .a on stack 
jsr talk + and call talk txa transfer .x to .a 
bit st i check status pha ; save ,x on stack 
bpl + + okay, branch tya transfer .y to .a 
jmp nodevt ; device not present pha save .y on stack 
Fi ldy #$00 zero index 
+ lda #S6f ; sa for command channel - tsx get stack pointer in .x 
dex thea 1 send ga for talker inc $0104,x increment return address 
t st ; check status bne + ; branch if result not zero 
bpl + i okay, branch ine $0105,x incr high byte of address 
jmp nodeyt + device not present 1 
; f + lda $0104, ; get low address 
+ idx #0 7 zero index sta $bb 7 save in zero page 
- jsr acptr ; get a byte lda $0105,x 7 get high address 
da st } get status sta $be ; save in zero page 
ne sd i status bad) branch lda ($bb),y } get character via pointer 
la Sa j get last char in .a beq + ; branch if zero 
sta errbuf,x  ; store in buffer jsr chrout ; else output character 
inx ; increment index bee - ; get next character 
ne - + get next char 7 
A , + pla i get .y from stack 
+ cmp #$40 ; end of file? tay ; transfer to vy 
beq + ; yes, then branch pla ; get .x from stack 
: tax ; transfer to .x 
sta tmpst # mo, store st pla # get .a from stack 
jsr untlk } tell drive to shut-up rts ; exit 
jsr unk } unknown status ? 
Sec } set carry to indicate send i end assembly 
& 
Volume 2, Number 6 29 COMMODORE WORLD 


+ CMD 


RAMIGHK Power-Backed RAM Disk 
RAMLink Base Model (OMB, No RAMCard).... $149.00 ass JiffyDOS 
RAMLink w/t MB RAMCard $229.00 


Sees scsi Hard Disk Drives: 
HD-40, 42 MB (Limited Supply)... 
HO-340, 340 MB (Special Edition) 


HD-500, 500+ MB (Special Edition) RAMLink w/4 MB RAMCard * 
HD-1000, 1 GB (Special Edition) . RAMCard ATC Option/Kit STM 99922 Increase Speed Up to 1500% while 
HD-2000, 2 GB (Special Edition) . RAMLink Battery Back-up (Optional) $24.95 retaining 100% compatibility 


Parallel Cable (RAMLink to HD) $14.95. o tua i, 
Feo (600K ae oe Speeds up Loading, Saving, Veritying, Formatting and Reading/ 


F400 WOK Teno ie em Writing of Program, Sequential, User and Relative files unlike 
FD Real-Time-Glock Oplion'ki,.. '$20.001829.00 SID Symphony Stored Cartridge $1495 Cartridges which only speed up Loading and Saving of PRG files 
‘Box of 10, High Density Disks (1.6MB) $14.95 Sonus 64 Sequencer, MIDI Interface. Cables... $99.00 © Built- 


in DOS Wedge plus 17 additional features including file 
Copier, text dump, printer toggle, and redefinable function keys 
make using your computer easier and more convenient 


Box of 10, Enhanced Density Disks (3.2 MB) ... $29.00 Sonus 128 Soquencer, MIDI intertace, Cables. $99.00 
anguages & Compilers 


Speci er 5 BASIC 
fi nc rrhommbaakanade ea ar ye ae 33500 * ROM upgrade installs easily into most computers and disk drives, 
“IKOOS G-128/128-0 Systom $59.9. Blitz! 64 Compiler (Skyios) $2000 Supports C-64, 64C, SX-64, C-128, 128-D, 1541, 1541C, 
Additional Drive ROM’ $24.95 Lor 128 Conpeiet (Skyles) $90.00 1541-11,1571, 1581 and more. 
MiscoNAneour Hardware cmeinee reed a 

80-column Monitors (Roturb) CALL Fortran 64 (Abacus) $17.00 D 
Aorta ‘3-Way User Pont Expander 1 $30,00 Pascal 64 (Abacus) “ — ae $17.00 

iprotek User Port Extension Cable $19.00 Powor C 64 (Spinnaker) $14.00 
ce 4:6 Computor (Ratu, wD) See ue Productivity | 3.2 and 1.6 MB 3.5" Floppy Drives —— 

64, C-64G Power Supply (Repairabie) 9.00 : i 
6-128 Power Supply (Repaiablo) CALL. Cadpak 6 (Abacus) $2200 The FD-2000.andFD-4000disk drives utiize [ites 
Gannon BJ-200ex Bubbla Jet Printer $260.00, Cadoak 128 (Abacus) $2500 today’s latest 3.5 inch disk drive technology. 
‘Cannon BJC-4100 Color Bubble Jet Printor CALL Giarpst sous) x } 
‘Commodore 1541 Disk Drives (NEW, w/JO) ..... $119.00 Chartpak 128 (Abacus) $25.00 ER. 2000 8 support G00ks (1681 pees ae 


: 1.6 MB (High Density) formats, while the 
‘Commodore 1541 Disk Drives (Roturt, w/JO) 75.00 | Paint v1.5 (128, 80-cot, 64% VOC) (Living Proof) $39.00 bs 
Commocoe tats Dik Orca thet wal) Seuo [Port vt 54 (128, edeat,exk Voc} ny Peet) .$23.0 FD-4000 also offers support for the 3.2 MB (Enhanced Density) 


Gommodore 1571 Disk Dive (our, w/ JO)... $99.00 Outagoous Pages (ates included) $1900 disk format. Fast and reliable, they support 1541, 1571 and 1581 
Coromadors 16802:40-cokne Moriior (Relurh) - 109,00 , SRG0® atiote Krmeger te style partitions, Native Mode partitioning and can actually read and 
CMD EX2+1 3-Port Cartridge Port Ext Pocket Writer 1 (64) Digital Sol.) ers o rv 

EMD EXS & Pon Carindge Pon Cxpendoy $2.88, Pocket Witor 2 (64/128) (Digtal Sol) $65.00 Write 1581 disks. FD’s feature built-in JiffyOOS, SWAP button and 
CMD Gamepad/Joystick Controller $24.95 Pocket Writer 3 (64 or 128) (Digital Sol.) $70.00 optional Real Time Clock. High capacity, speed and compatibility 


CHD GeoCabie 1 Print Cable 6/18... $29,034.09 Pocket Piannor 2 or Pocket Fi 2 (Digtal Sol) $35.00 make the FD right for every application, including GEOS. 
GMD SmartMouse (1351 Compatible Mouse) .. $49.5 PoworPlan 64 (Abacus) $16.00 


CMD SmartTrack (1351 Compatible Trackball)... $69.95 RUN Productivity Pak |, Il, or Ill (Specify) $15.00 

Monitor Cables. CALL. RUN Super Starter Pak 1541 or 1581 $20.00 RAMiink 

MW-350 Printer Interface (OK/8K Butter) $49.00'S60.00 * jeter 

Panasonic KXP-1180 Spin Printer $is0.n0 SuverScr G4 (Precsan) $20.00 Power-Backed Expandable REU 

$229.00 Hs ~ 

‘Samsung SP-2417 24-pin Color Printer .......$319,00 Suberbase 64 Version 3.01 (Precision) $35.00 The fastest possible form of storage, 
‘Superbase 128 Version 3.01 (Precision) ...» $95.00 RAMLink provides instant access to files 

Big Blue Reader V4. 10 (SOGWAP) S900 Pavoct Tax Ot (re Bs Upgrade) Se and retains data while your computer is 

ig Blue Reader " : 

CMD Utilities so $28.95 Pertect Tax 128 (Free "95 Upgrade) «nnn $79.00 aT belies off. Easy to i Hee expandae 

JittyMON-64 (ML Monitor) " $19.95 TWS 64 wiSpeller (Busy Bee) * $23.00 to 16 MB, RAMLink utilizes the same powerful operating sy: 

helGomnpression Kat's (Mad Man) $0.00: TS 128 wiSpeter {eey Bee), $99.00 found in CMD Hard Drives. Unlike Commodore REU's which are 
pasa £225 $500 compatible with less than 1% of commercial software, RAMLnk 

Collett Usities (Handy Geos Utitias) $19.95 Galecommuntcatio supports more than 80% of the commercial titles. RAMLink also 

Presale titsed $22.00 prota Minder C28 (Ce a i Seno vl fers builtin diffyDOS Kemal, SWAP ealuras reset baton, scab 

Dweezils Greatest Hits (NowTecis2 Stamp Labei?28) protek MinModem C (C= ready. : 4 spb paee eh ne 

FONTPACK Plus “* $25.00 Aprotok Modem adapter (C= to Ext. PC Modem) $20.00 disable switch, pass-thru portand Ri pt dabilit d compatibility 

gateWay 64 or 128 (Specity Version) $29.95 BOCA 2400 Baud Modem 49.00 RAMLink offers maximum speed, expandability and comp: 

geoBASIC : cn» $20,008 BOGA 2400 w'Switink and Cable -.$99.00 with all types of software and hardware including GEOS. 

geoCalc 64/128 '$40.00/$45.00 BOCA 14.4K bps FaxModem $129.00 

geoChart $29.00 BOCA 14.4K w/SwiftLink & Cable $159.00 

COAX ... BOCA V.34 28.8K bps FaxModem $219.00 HD ry 

GooFile 64/128 BOCA V4 wink Catto $219.00 seas 

MakoBoot (Makes Bootable copies) yalogue 

Sechrogrnoner $45.00 SpoodTerm (Abacks) S300 SCSI Hard Drive for the C-6: 

gooPublish 40,00 eSwiffLink RS-232 Cartridge (Up to 38.4K baud) .. $39.95 4D Series Hard Drives are available in 

GEOS 64 v2.0 $44.00 SwiftLink Modem C: (089-0825) $9.95 capacities up to 1 GB, are fully partitionable, 

GEOS 126 v2.0 $49.00 


qeoSFIELL v2.2 (CL tor GEOS) £200 ST ang can emulate 1541, 1571, & 1581 disks 


‘Nomino $17.00 While Native partitions utilize MS-DOS-style 
Intemational FONTPACK. $25.00 1300 While Native partitio " . 
Pertoct Prot LO for GEOS (Laser-ike output)... $4.98 PANS re $is00 subdirectories, HD's connect easily to the serial bus or parallel via 
BUN Gece ora ae a : $i000 RAMLink. Includes built-in JiffYDOS, SWAP feature and RTC. HD's 
pS Ta seu 027 the Lito of Prehistoric Man $1909 offer superior compalty with most commercial software including 
eo Hee $1900 BS, Productivity and GEOS, And with ne pricing, HD Sores cives 
Anatomy of tho 1581 feavenbound 1 Ee na oten he ; 
Basie Compiler Design forthe C64 $1200 la ot Ono $1000 offer the lowest cost per megaby y 
6-68 Sconce & Engmoonng ‘sor Squa 0 - 
C128 Computer Aged Design $1200 Lions of he Universo $1995 Shipping and Handling Charges 
C128 BASIC Training Guido $12.00 Mainframe $1300 sess a see 3 AE 
Cassotte Book tor 64 and Vie 20 $1200 Monaco : 5.00 se ne chart bolow to maten yous odor subatlutn Your ship 
‘Commodore 64 Tricks and Tips $12.00 Navy Seal Sinon Continental United States. 
GEOS Programmers Reference Guide $35.00 Rings of Medusa pte 13 
Graphics Book for the C-64 .....0 $12.00 RUN C128 Funpak smears $10.00 Order Subtotal Ground | Day | Day | HI,PR |Canada 
Fithikors Guid to GEOS $3500 RUN Be Gamo ee a sm | aw [srm| sem] sm 
Idoas for Use on Your C-64 ate of 
Prive Book rt Cod Se ee Cael soos $1800 Epopamnon | ssem [soon | ssn | sv40n| $700 
Simba erst $16.95 The The Stooges $1000 [couse | samo | s1000| soo samo |e 
Supra The Bock $15.00 Te Brak Tone 318% [moostenoo | samo [sen | seo | s19e0 | 2c 
Ene 2800 Wes aC 3702 [racosamon | som [sven sre] ro | soem | cn 
: Wings of ico = ae 
papers 2 $199.00 Waarary 5: Hoar ofthe Maaiatiom “$2400 [Seononsrwona | sisoo | sono | sox00 | s2700 | $2500 | cat 
$0000. szo00 cal 


UPS C.0.D. add $5.00 (US/PR only) 


Policies: CMD accepts: Major Credit Cards, Money Orders, COD and Personal Checks, 


WE ACCEPT ALL MAJOR 
jal “NY “CREDIT CARDS =e 
Porsonal Checks aro hold 3 weeks. Customer is responsible for shipping charges on 


7 merchandise 
Inc. Phusale Mostitems are stock, contact CMD for lm dalivory. Returns fr merch 

Creative Mlcro|Bestons. in ctedit only within 30 days with prior authorization, Credits are less shipping, handling, 

P.O. Box 646 Info: (413) 525-0023 axes, customs, duties, and a 10% restocking charge. No refunds or credits on opened 


East Longmeadow, MA 01028 Fax: (413) 525-0147 jare. All prices and specifications aro subject to change without notice. 


Topay's Most Apvancep Mass StoracE 
Devices Just Became More ArrorDABLe 


FD-2000 Drive Specifications 
Amazing 1,6 MB capacity, plus reads & writes 1581) disks 
* Upto 20% faster than a 1581 on'stook computers, and 
Up to 1500% faster on JiffyDOS-equipped systems 
* Emulates 1541/71/81 disk formats for better compatibility, 
plus CMD Native partitions for greater flexibility 
Configurable as devices 8 through 15, plus front panel 
SWAP buttonifor instant device 8 or 9 selection 
Optional Real-Time Clock (RTC) stamps time and date 
on all files and automatically sets GEOS clock 
* Reads, Writes & Formats MS-DOS diskettes Using Big 
Blue Reader utility program (available separately) 


To Order Yours, Call 1-800-638-3263 


=, 
our? 1599 


Optional Real-Time Glock (RTC) add 520% 


This offer valid only in U;S, and Ganada through December 31, 
1995, May not be combined with any other offers. Prices do not 
include shipping and handling, See our main advertisement on the 
Opposite page for shipping prices and policies, 


If you thought the HD-40 was 
affordable before, just look at this... 


Recently, during one of our routine searches for hard disk 
drives, we were offered a significant number of 40 MB 
Connerand Quantum SCSI hard disk drives at a price so low 

that we just couldn't refuse. 
Additionally, were offered some 
superb pricing on the larger 
Hard Drives. Solow, infact, 
that we're offering the 
HD-340 at a price 
nearly $1,500.00 


ChAD 


lower than the original HD-200 back in 1990. If you've ever 
considered adding a CMD HD Series hard drive to your 
system, now is the time to do it! These outstanding prices 
will only last as long as our supply of these specially priced 
drives, So don't hesitate—add the power and flexibility of a 
CMD hard drive to your system today! 


CMD HD-40 JUST $249” 


HD-340 340 Megabytes $349% 
HD-500 540 Megabytes $499 
HD-1000 1 Gigabyte $599 
HD-2000 2 Gigabytes $999 


Prices do not include shipping and handling. See our main 
advertisement on the opposite page for shipping prices and policies. 


Creative Micro Desicns, INC. 


Fontigus 128 v2.0: "A Professional 80 
Column Character Editor for the 
Commodore 128 and 128D", $29.95 
Jrom PHD Software Systems, PO Box 
23, Moville, lowa 51039-0023. 


Character sets give programs their 
personality and style, for the shape 
of lettersand graphiccharacters can 
have an impact on how the program 
is perceived. Any program that has 
text uses character sets. Some use 
the set which is in the kernal ROM; 
others usesets specially designed for 
the program. Game programs use 
character sets fora different purpose: 
for the graphics you see on screen 
and in the background of 

Depending on the program used, 
editing character sets could be a 
tedious process, but Fontigus 128, 
an 80 column character editor, has 
features that make changing 
multiple character sets of any size 
quick and easy, One of my favorite 
features is the ability to have up to 
seven character sets in memory at 
thesame time. Each set can beedited 
and saved individually, The usercan 
cut and paste ranges or individual 
characters from one set to another, 
My second favorite feature is a 
“global” mode that lets you select 
multiple characters to change 
characteristics ofthemallatthesame 
time. For instance, ifT wanted all the 
lowercase lettersinacharacter set to 


ame. 


be shifted down a row, I can change 
them all at once instead of editing 
each individually. This isn’t found 
in most other character editors. 
‘The documentation for Fontigus, 
4 14 page spiral booklet, explains the 
difference between the upper case/ 


Volume 2, Number 6 


FONTIGUS 


graphicsset, thelowercasealphabetic 
set, and how each are used, Each 
function of the program and 
commands for e: 


ch mode are 
ibed in detail. A command 
reference and indexarealsoincluded. 
After loading Fontigus, the main 
screen appears with both the upper 
and lower case portions of the CBM 
ROM character sets displayed, and 
a dividing line to show which set is 
which. Most of the commands are 
shown on the screen to remind the 
user of what's available. 

‘The program willloadanyfileasa 
character set regardless ofits name. 
It can be interesting to load a non- 
character set into an editor just to 


des 


see the results. Usually it’s not very 
pretty or useful, but it shows how 
the editor manages unusual 
“character sets”. With other editors, 
when I've loaded a character set that 
used different positions for the 
characters than what the editor was, 
ny helpful text on the 
screen turned into a mess, making it 
hard to read what keys to use for the 
different functions. Fontigus deals 
with this probleminacoupleofways. 


expectin, 


Since it uses the lower 
alphanumericset foritstext, theuser 
can either swap the upperand lower 
esetswhileeditingandthen swap 
them back before saving, or the user 
an press the “0” key to temporarily 
restore the display using the CBM 
ROM character set instead of the 
one being edited. 

The character the cursor is on is 
displayed in a grid on the main 
screen. Alongside this, the row byte 
values are shown, as wellas the ASCIL 
(Petascii) value of the character, its 


case 


128 


screen code value, and whether it’s 
from the upper or lower case set. 
Therowbytevalues forthe character 
i jul feature for programmers, 
but I think itwould be more useful if 
e them to disk 
as data statements for use in BASIC 


it were possible to s: 


programs. Underneath the character 
grid, the character is displayed in 
the 16 colors of the C128, in under 
lined video, reversed video, and the 
character in the same position ofthe 
alternate character set. 

For editing, Fontigus shifts to a 
different screen with the editing 


32 


commands shown. The character 
beingeditedis displayedin differing 
formats such as normal, inverted, 
flipped, or with its quadrants 
exchanged, so you have a visual 
reference of the effects of these 
options. Using a single command, 
characters can be mirrored left or 
right, flipped, inverted or rotated. 
They can also be shifted by line or 
row, both vertically or horizontally. 


Fontigus can save the lower, 
upper, or both character sets 
together, and also prompts whether 
to save them in short or long form 
(with or without null zero padding). 
‘This is a good feature, as I've used 
other character editors which don’t 
offer any choices about how the sets 
are saved. 

There is a good directory viewer 
showing two columns of files at a 
time with a pause between multiple 
screens. It would be nice if the 
character sets could be loaded while 
viewing this directory. However, the 
user has to type the name of the set 
without this luxury. Fontigus 
supports DOS commands, but you 
can only send one command at a 
timeandit prompts forthediskdrive 
number each time. The author 
indicated he would improve this in 
the next version, 

If you've been looking for an 80 
column character editor, Fontigus 
128 offers extremely powerful 
features. Projects | started with other 
editors, but putoffdueto difficulties, 
were easily completed using 
Fontigus. In the course of a couple 
days, ledited over 200 character sets 
hout realizing it. 

- Gaelyne R, Moranec 


COMMODORE WORLD 


TURBO ASSEMBLER 


Turbo Assembler; £9.95 plus £1.00 
shipping. Turbo Crass Assembler; 
£19.95 plus £2.00 shipping. Available 
from Electric Boys Entertainment 
Software, 2A Woollaston Road, 
Harringay, London N41SE; Phone and 
Fax: 0181-348-4916. 


A friend said to me the other day “I 
didn’t know you still used a 
Commodore 64 computer. What do 
you dowith it besides useitasa great 
big calculator?” He chuckled at the 
laststatement, but was quieted when 
linformed him that I can utilize the 
Internet, send and receive faxes, 
create publications, balance my 
checkbook, catalog my belonging: 
and play better games than the kids 
down the block with their Nintendo, 
My friend was stunned. He wanted 
to know how I could accomplish so 
much with so little. 

You and I know it is the work of 
talented programmers. Howevei 
behind each talented programmer 
is a set of useful tools for the job, In 
the case of machine languag 
programming, Iknowmany talented 
programmers that use the following 
tool: The Turbo Assembler machine 
language assembler. 

Turbo Assembler is an assembly 
language development system that 
runs on the Commodore 64 or 128, 
[twill create executables suitable for 
any Commodore platform, and the 
language is similar to other 
assemblers, so someone can migrate 
from another assembler to this one 
without much trouble. The 
introduction quote sums up the 
purpose of this assembler: “After 
many years of honing and 
integrating, Turbo Assembler is 
finally available for use by people of 
all levels of programming ability.” 

‘The product comes on a 1541 
formatted disk, and contains 
separate versions of the assembler 
for the C64 and the C128 (in C64 
mode). The two versionsaresimilar, 
but the C128 version will take 
advantage of the 2 MHz speed of the 


Volume 2, Number 6 


128 CPU during assembly. In 
addition, the disk contains a C64 
and C128 version of the assembler 
designed for cross-assembling. 
Turboisanintegrated assembler. 
The program is loaded and started 
with a SYS 36864, which brings the 
user to the editor. In both versions. 
of the assembler, the screen is 40 
column and does not scroll side to 
side, so you always see the entire 
source code line on screen. The full 
complement of assembler opcodes 
are supported, as are pseudo 
opcodes like BYTE, .WORD, and 
-TEXT. Labels and the #> and #< 
ators are supported, as is 


ope 
mathematical expressions as 
arguments for opcodes. The full 


complement ofhexadecimal, binary 
and decimal values are permitted 
forassignmentsand arguments, and 
the familiar *;” character signifies 
comments. On the surface, the 
assembler seems just “normal”, 

After the program is started, it 
popsinto theeditorwithastatus bar 
at the bottom of the screen. Along 
with row and column position 


information, the line indicates 
whether the insert character mode 
isonoroffandhow much memoryis 
left in the source code buffer. 
Command mode is entered by 
hitting the back arrow key, which 
enables access to the rich set of 
commands. Among the commands 


available are: assemble to disk or 
memory, load and save, block 
editing commands, — simple 
arithmetic aids, memory dumps to 
source codesand memory ills. More 
esoteric commands include ones to 
change the color scheme, insert a 
row of dashes as a comment line, 
and redefine the function keys. 
Itried compiling a small program 
with the assembler and noted tha 
the integrated editor attempts to 
catch mistakes while you are 
enteringa line ofcode. Iflenteredan 
illegal opcode or used the wrong 
addressing mode, the editor flagged 
the line as illegal by changing its 
color and noting the error on the 
tusline. Assembling my program 


was but a keystroke away, and the 
program could be run immediately, 
After completion of the program, 
the assembler can be re entered by 
typing sys 36864, 
Inordertomaximize performance 
and spac 
source code on disk in a proprietary 


Turbo Assembler stores 


format. However, for those people 
wishing to use existing source code 
file or wanting to save full listings of 
source, the editor has the option of 
reading or writing a PETSCH source 
code file. For the large software 


developer, one of the editors 
commands will save a copy of the 
labels and locations to a separate 
file, useful for multiple file source 


33 


code development. But best of all, 
the assembly time is quick; further 
speeded up by the blanking of the 
screen during assembly, 

Although the copy of the 
assembler used for this review has 
the cross-assembly software, the 
required machine to machine cable 
was notavailable, 
not tested. Nonetheless, the process 
is very straightforward. Load the 
assembler on one machine, while 
loading the small loader program 
ontheothermachine, Editthe source 
code in the editor, and assemble as 
usual. When the program is started, 
the results will show up on the 
remote machine. This alleviates the 
problems associated with having an 
error in the program under test 
the development 


this feature was, 


destroying 
environment. 
fter using the assembler for 
many samples, learned about many 
ofits features. [thasimpressive parts, 
but unfortunately suffers fromsome 
major limitation: 'y assembler 
has some limits, but these seem a bit 
constraining: 

The assembler allows labels and 
function names to be used in source 
code, which is good, but each name 
must be in lowercase. Many 
developers use mixed case to 
improve readability, while some 
definitions, like TRUE and FALSE, 
are sometimes in all caps to 
distinguish them. The editor only 
allows 40 column lines. This seems 
adequate at first, and it helpsallowa 
programmer tosee theentirelineon 
screen at once, but on-th 
comments can all too quickly reach 


ine 


the 40th column. The manual that 
accompanies the software is sparse 
at only 21 pages. While this won't 
affect intermediate to advanced 
programmers who have used an 
assemblerbefore, thebeginninguser 
will find the going rough, and even 
experienced users will have to 
experimentwith the more advanced 
editor commands. The assembler 
does not support any type of file 


COMMODORE WORLD 


includes or multiple file assembles, 
The programmer can manually 
assemble different files and 
concatenate them, buttheassembler 
won't automate this process. This 
becomesaproblemwhen yourealize 
that the under 
development must fit between 
$080 10 S8FEA, 

The tone of the manual suggests 
at this assembler is ideally suited 
to demonstration or “demo” code 
development, which could be true. | 
see the progra 


source code 


mas providinga good 
assembler for testing small pieces of 
code or subroutines. The beginning 
user will like the error detecting 
editor, as well as the integration 
between the the 
assembler, if they can cope with the 
user manual, After using the 
assembler for a few days, a few nit- 
picky items cropped up that should 
be noted. Some are just mere 
oversights, but any serious developer 
knows even the smallest problem 
with the tool can make the proc 
seem longer and more frustrating. 


editor and 


Variables and labels can only be 
15 characters in length. The editor 
is nice enough to note this as it 
occurs, butsome programmers may 
find this a limitation. The editor 
includes a nice feature to allow the 
cursor to automatically tab to the 
10th position of an inserted line, 


place opcodes at that position, and 
put labels at the far left, making the 
code more readable. However, 1 
ange the position 
to anything other than 10. 

There is no native C128 version, 
Being a rather staunch C64 


foundnowaytoe 


developer, it doesn’t bother me that 
much, but C128 programmers will 
likely find the 40 column screen and 
lack of support for the extra memory 
in the C128 a significant limitation, 
Mier using the editor, L exited out of 
the editor to BASIC, only to find my 
cursor was invisible. Maybe it’s just 
me, but I couldn't get the assembler 
to allow reads or writes to any drive 
besides device 8. Surely a command 
exists to change the data drive, but 
the usual disk commands didn't 
work, and the manual didn't offer 
any suggestions either, 

Some of these problems can be 
corrected by a new release, while 
others could probably be fixed by 
updating the documentation, 
Nonetheless, some may find these 
small oversights to be extremely 
annoying. 

‘Turbo Assembleris an interesting 
product. The version that comes on 


disk contains regular and cross- 
assembler versions of the assembler, 
butthemanualimplies thata version 
whi 


lows macro definitions and 


a version which allows an REU to be 
used as extra RAM for program 
development both exist. Yet, these 
two capabilities are not present on 
the version supplied. In addition, 
the initial quote claims that the 
product has underwent “years of ... 


integration...", but these two 
innovations are not in the product, 
One can only guess how useful these 
two fi 


ures are. 
My recommendation is that, 
while Turbo Assembler seems li 


ea 


product with promise, softy 
developers looking for an assembler 
should buy this product with some 
hesitation. Some people will find its 
limit 
serious developers will find the 
product lacking in support for large 
projects. Ontheotherhand, the ease 
of using the product makes it ideal 
forsmall projects or prototypework, 
and the ability to cross assembler 
cansave valuable timein the software 
development cycle. Caveat Emptor! 

Jim Brain 


ions a non-issue, but some 


Winter Clean-u 


This year at CMD, we neglected our Spring 
cleaning house and giving you some great deals! Call our order 
line at 1-800-638-3263 now; product quantities are limited! 


* = Games 64 + = Book 64 
Sale! + =Games 128 4 = Book 128 
+ = Productivityo4 A = Productivity 128 


leaning. Now we're 
0 = Printer 


£ = Productivity 64/128 « 


¥=Manual (Computer) 


Mise, Hardware 
* = Drives 
Manual (Drive) 


" 


+ Fini Book of 
* Hacker 


* Hadhall 
fu 


138 


+ Acgot Aves 
* Adare Construction Set 
* Alice in Woestland 


* cade Mepaits- Vo. * Killed 
* cho * Right Game 
* Anton It * Kronis Ri 
* Artin * Lave R 
4 Normandy + 1L0G0 Work 
Hexen & Chis KC 
* Bu ay 


4+ C468; Ging the Moff 


+ Hands on BASIC forthe C-64 


Odes Scenery Dish 


* Kenaedy Appr 
Do 


ie Desk |» Type an File 
Mail Onder Monsiety 


ual Spel 


rogram fore Hor * Movie Mo 
Gubler * Murer Pay 4 
* Ocean Range 
* Clow Curie * Omega 
* (lu Maser Detatve | Ovni 
* Comics * Operation Wall 
+ Comma 64 Garey Book 2 * Outen 
+ Comms 64 Gane Hook * Phamasie 


ia Co ¥ Simons BASIC Carndge 
* Shy Fox 


* Slariok "The Promethean Prophesy 


the Unive 
+t The Hlectronie Checkbook 
+ The Filer 
+ The Hacks 
Thel 
He ith 
The Money Manager 
* The Masi 
+ The Plurner 
* The Seven Cities of (i 
* The Shadows af Mondor 
* The Slug 
* The Train 
The Wi 
4 The Wie 
+ Things todo with your 68 
* Ticket to Wshingto, DC 


* Covnidown to Shutdown Primed Word & Cle 6 
* Cut & Pave Project Space Station 

* Defender of he Cow Raid Over Moscow Advanced Dang 

* Dela Drawing Care * Renwgale Dungson Mat 

* Dragon Wars * Rowin’ Ton Canidee * Advanced Dungeons & Dragons 
* Drags Lair * Sago lt of Radiance 

+ Elen * Saool Tale ay Krug 

‘ * Serve & Vly * Buds Tale Il Thi of Fate 


+The 
{The Essential € 


* Badge Make 

ACIS BASIC 

+ (64: Graphs & Sound 
Programming 

* Carer Force - Santa Cru, Midway 

* Carer Force 3 Coral Sea 

* Caters at War 1941 1948 

* Chuck Yeage's Advance Plight 


Uhm 1¥ 


1M 
1Sd1 Ma 
ISH Maw! 


estion Vo. 
* Decision in the Dos 


«Fig Simulator & FSIL82 New ‘ISHIC Manual 
Aventures 1571Manul 
‘ BASIC | Tutorial 
* Flight Simaltor I-64 C128 Mana 
* Gunship C1280 Mana 
* Hunt fr Re Oster VCHIManal 
+ Hsraed Guid he C6 Cent Library 
* Indiana Jones» The Lot Ki Cipanc 


* Jack Nicholas Greate! 18 bok DataMana 
"ET 64 Flee Syern 2 
+ JET 82 New Challeng Font Maser It 

ena A FootMaver 126 
+ Kids and the Commodore 64 Mane 


* PanuerJAGD MI Mouse 
PHM Pegasus Navarone 
+ Programming the (6 Paperback Filer 
i it VVICIOM, 
Red S Wont 128 


* Sint Service 
* Sloe! Thunder Tuah Simulator 


+ CO4Pr 


wamodore 6 Users Guide 
128 User Guide 


4 The Offical Book forthe C128 


Aprspn Catidge Pot Expander 


‘Partner 135 Canridge 

APocket Writer (28 

+ Prin Shop 

‘4 Sylvia Porter's Personal Fisaace 
Sylvia Porter's Pervonal Finance 
Vassar Cantidge 

3 WordWrtert28 


1128 Programmers Guide 


0 CBM 152 


4 a Ho 
0k 


MPS 801 
MPS 803 


HCD SIS 
4 Enhanoer 2000 


Light Pen 170 
Ligh Pen 184C 
Port Eapander 
#19D-2 Accloraor Plas 
$ lotus GT 
0 MPS 1280 
Okidata 120 


Guide 


All software tested and repackaged. All disk drives tested. All other hardware untested but in good condition. All products sold as is. $15.00 minimum order in effect | 


| aed 


Volume 2, Number 6 


34 


COMMODORE WORLD 


AMIGA 


Repairs * Upgrades ¢ Sales 
Factory Trained Techs * Flat Rate + parts * 90 Day Warranty 


Buy ¢ Sell * Trade 


Amiga Computers + Monitors + Accessories 
BSP 
Voice 908 245-1313 
Fax 908 245-9409 
WANT MAILINGS? EAX NAME + ADD + PHONE + FAX 


USED SOFTWARE 


We buy, sell, and trade used original software. Lowest 
prices for C64, C128, Amiga, and IBM. Mention this ad 
and your computer type for a free list. Call our BBS for a 
complete list within minutes. 


Call or write: 


BBS: 
8N1 1200-28.8k 


ENTSIBLE 
—==| 616-429-7211 OFTWARE 


7 P.O. Box 930 
St. Joseph, MI 49085 


Ask for a list via Internet: Phone: 616-428-9096 


CENTSIBLE@DELPHI.COM 


ESCAPE ROUTE 


The Adventures of Eric Hawthorne, P.I. 
A combination of action, board, 
and strategy games. Help Eric track 
the infamous ICELADY who has 
stolen the rare Acme Diamond! 
Fun for everyone! For the C-64 or 

C-128 in 64 mode. 

Send check or M.O. for $19.95 to CREATIVE 

PIXELS, P.O. Box 592, Library, PA 15129 


All Aboard the Commodore 
Information Supersubway! 


‘The Underground is a grass-roots Commodore 
publication produced with 8-bit_ computers, 
Geos, and a Postscript laser printer. For a mere 
year, you'll get helpful features, current 
and on everything 
A sample i 


from 


THE UNDERGROUND, 4574 Via Santa Maria, Santa Maria, CA 93455 


ICarvMex: US$2.25/sample, $12.50/one year. International: USS3.75/sample, $21.50/one year. 


64/1541 Repair - $40 
*SPECIAL* 
C64, 1541, J-S+Sft. - $99 
r) 
< 
Everything for Commodore Computers 
Sell» Trade + Repair + Buy 
1420 County Rd. 914 
Burleson, TX 76028 


817-295-7658 
817-447-6974 - Voice/FAX line 


‘ALL STORE ITEMS HAVE A 00 DAY WARRANTY. IF, FOR SOME 
REASON YOU ARE DISSATISFIED IN YOUR PRODUCT, YOU MAY 
RETURN IT FOR REPLACEMENT OR STORE CREDIT ONLY. 
SORRY, NO REFUNDS. 


We carry a full line of hard- 
ware, software & maga- 
zines, both new & used, in- 
cluding European items. 
Our flat-rate repairs in- 
clude both parts & labor. 
Call for details. Trade in 
your unwanted items. 
Catalog - $2.95 
Aut Masor Creoir 
Caros Accerteo. 
We carry a full line of 
Amiga Products. 


INTERCORP COMMUNICATION Presents 
CSOFT Wares! 
{As Seen on Many BBS's} 
Digi<—>Dox V1.8 
a SEQ. file reader that will read text as well as art.and supports drive's 


8-111 also has many Digi-sounds which are very entertaining. 
$2.00 Sat 


none disk with avery easy 
ing and playing. 

Great For the Kids! $3.00 + $2.00 SaH 

Send orders to 

Intercorp Communication 466 W.Harwood Madsion Hts MI 48071 
Alaska Hawil.a International add $1.00 to Sah 


Super Pogo Stick Adds: 
© 25 different mazes (with the 
ability to use even more) 


Both 
for $19.95 


games 


a | 


S (801 vee. 


Specializing in NEW and USED Commodore Hardware, 
Software and Accessories at excellent prices. 


Send $1.00 for a HUGE list of products. Office Hours: 
11:30 - 6:30 MST. Visa, MC, Discover and American Express accepted. 


3366 South 2300 East, Salt Lake City, UT 84109 


Volume 2, Number 6 35 


COMMODORE WORLD 


Graphic Interpretation 


by Steve Vander Arb 


GETTING STARTED WITH GEOBASIC: PART 2 


In the last installment of this column, I started 
talking about writing programs with geoBASIC. 
| gave you an outline of a geoBASIC program 
using an “event-driven” structure. Then I talked 
through the creation of several ofthe components 
from which our program would be built. fended 
the column by saying that “everything will plug 
right in, just like an electronic Lego set.” But | 
also warned you that geoBASIC can throw you 
for a loop now and then, 

So, this time we'll review the structure of our 
program and write out the geoBASIC code itself, 
and I'llalso introduce you to some of the pitfalls 
you should avoid. 

Here's the program outline from last month's 
column with my notes added in parentheses: 


@titleScreen - a routine to create the title screen 
with two buttons saved as “icons1”: 
titlel - ties to @quit 
title? - ties to @mainScreen 


(This is a subroutine; the name is set apart 
from other geoBASIC commands by the @ 
symbol. screen will have two buttons on 
it which will, when clicked by the mouse 
pointer, jump the program to routines called 
@quit and @mainScreen. The label names of 
routines can have upper and lower case letters 
in them, as you can see, Notice that I called the 
buttons “tithel” and “ttl These names 
show up in the icon editor where I create the 
buttons themselves.) 


MAINLOOP 

‘The program waits at this point for a button or 
menuitem to be selected. The rest of the program 
will consist of the routines which those buttons 


Volume 2, Number 6 


and menu items call up. (This is the heart of a 
geoBASIC program. This is what actually makes 
the program act like a “real” GEOS program.) 
@mainSereen - a routine to draw the main 
program screen and set pattern and color to their 
starting values and display the following buttons 
and menus: 


a drop down menu saved as “mainM” with 
three submenus, 


a “geos” submenu where available desk 
accessories will be listed automatically 


“program info” - tied to @about 


a “file” submenu with two choices: 
“quit” - tied to @quit 
“start over” - tied to @mainScreen 


an “attributes” submenu with two choices: 
“color” - tied to @colChoice 
“pattern” - tied to @pattChoice 


36 


four icons saved as “icons2”: 
draw] - tied to @drawReet 
draw2 - tied to @drawLine 
draw3 - tied to @sayHi 
draw - tied to @sernClear 


(This is the section that actually creates the main 
screen of our program. Notice all the bits and 
pieces that are mentioned. In this plan I have 
included all have names from the editors used to 
create these pieces, including the various 
subroutines. This information is very important 
to have planned out ahead of time, but most of it 
never appears in your program just in the 
editors. What follows this are the routines 
themselves.) 


@aquit 
ends the program and automatically sends the 
user back to the deskTop 
@ecolChoice 
changes the value of the background color 
@pattChoice 
changes the value of PATTERN for rectangles 
@drawRect 
‘ectangle on the screen 
@adrawLine 
draws a line on the screen 
@sayHi 
places the word “HI” on the screen 
@sernClear 
asks with a dialog box saved as “elrD" with two 
buttons 
“yes” which clears the screen 
“no” which returns doing nothing 
@about 
reports the author's name in a dialog box 


COMMODORE WORLD 


(Now if you want to double check, look back through the plan and see 
where each of these routines is called. Some are hooked to icons, others to 
drop-down menu selections. They could appear here in any order, of 
course, When an “event” occurs—when a menu selection is chosen, for 
example—the program will go to whichever of these routines applies.) 

Okay, now that we've walked through the structure of this program, 
let's turn it into actual geoBASIC commands. Last time we worked on 
creating some of the building blocks—the drop down menus, the 
icons, and what have you. Now this time we'll plug them into the 
nework. 


program 
10 REM geoBASIC program by Steve Vander Ark 
100 @titleScreen 


(Notice that we still use line numbers, even though the structure is not 
very linear.) 


110 
120 
130 
140 
150 
160 
170 


CLS 

PATTERN 10 

RECT 80,50,290,170 
PATTERN 1 

RECT 60,30,270,150 
PATTERN 0 

RECT 61,31,269,149 


(After I cleared the screen in line 110, I created a series of rectangles 
with the RECT command. Before each one | set the pattern inside the 
rectangle to a different value. This is a quick way to create a nice- 
looking title screen. Now all it needs is some text.) 


180 WINDOW 110,75,269,149 
(This is a window for my text to go into. I placed it inside of the 
rectangles I already drew.) 


190 PRINT” geoBASIC Program” 
200 PRINT"by Steve Vander Ark” 


(Now we have a title screen. It isn't fancy, but it will do. Now we have 
toadd a couple of buttons so the user can go on to the program itself.) 


210 ICON”title” 


(This command places a set of icons on the screen. These icons were 
created using the “icon editor” under the utilities menu ofthe geoBASIC 
screen, The images for the icons were created by the "bitmap editor” 
and were called “titleL” and “title2.” The routines they call were also 
specified at that time. All of this is specified in my plan above. Now, 
once all that was set up for us, our program gets a nice set of icons, all 
ready to use, with just this one simple command. ‘s what I meant 
when I said that everything would plug in like an electronic Lego set.) 


220 MAINLOOP 


(Here weare. Our program is set up and nowis waiting for something 
to happen. At the moment, the only possible events are the ones tied 


Volume 2, Number 6 


37 


to those two icons we just placed on the screen. One of them will move 
our program into its main screen, which we'll design next.) 


300 GmainScreen 


(That's another label. This routine will be called when someone clicks 
on one of our icons on the title screen.) 


310 PATTERN 0 
320 SETCOL 15 


(Before the program starts, I want to set these values to their base 
number. That way if someone changes them during the course of the 
program and then starts the program over, the changed pattern and 
color won't be in effect anymore. The SETCOL command is actually 
more complicated than it looks. I am using this formula: 15+16*0 . 
‘That means my foreground color will be 0, which is black, and my 
background color will be 15, which is light gray.) 


330 CLS 
340 REM MENU “ 
350 REM ICON * 


(These two commands place a drop down menu at the top of the 
sereen and a new set of buttons on a toolbar at the top. Again, these 
wereall detined using the editors, so now we just have to plug them in. 
All that’s left for us to do is to actually define our various routines.) 


400 
500 
600 
700 
800 
900 @sayHi 

1000 @scrnClear 
1100 Gabout 


@quit 
@colChoice 
@pattChoice 
@drawRect 
@drawLine 


Before we get those fleshed out, let me fill you in on a few possible trouble 
spots. First of all, don’t use the “update” selection under the “file” menuon 
the main geoBASICscreen, Doingso will damage yourfile. Second, be extra 
careful to write down thenamesofany andall componentsof your program. 
Remember that upper case or lower caseletters mustbe taken into account. 
‘Thereason for thisisthat when you try to open an existing bitmap, 
drop down menu, or other editor file, the requester box doesn’t really list 
any of the applicable files from the disk. Those files are there, but you need 
tobackspace over the word that appearson the dialogbox by thecursorand 
type in the name of the file you really want. You will need to have the exact 
filename written down somewhere because the files don’t show up in the 
directory on the deskTop either. Careful planning in advance makes it 
easier since you can name everything beforehand and make a list for 
reference. Planning ahead is also handy when you need to assign routines 
to various objects you create in the editors since you'll know exactly what 
the labels for those routines will be. 
Next time we'll get to the rest of our discussion on geoBASIC and the 

rest of this program listing. 


COMMODORE WORLD 


Carrier Detect 


When | first wrote about the World Wide Web, 
mentioned that ina broad sense, it is a form of 
advertising in which the consumer goes to the 
advertising source for information about a 
company or its products. It has gained in 
popularity not only among “mainstream” 
computer users and advertisers, but also by 
Commodore users and those who in one way or 
another support us. Commercial companies, 
program authors and others have been adding 
CBM support to the Internet ina big way, andit’s 
something you can have, too. This is one of the 
nice things about the World Wide Web— it’s 
not limited to big commercial companies, nor is 
it only for those with PC’s and Macs. As I 
jained in CW #8, we d WWW pages 
using an Internet utility called Lynx, whieh is a 
text based web browser. But we can do more 
than access WWW pages. We 
What does it take to create your own web 
page? You'll need to be on an Internet service 
which allows you to create “home pages”. If in 
doubt, ask the System Administrator. If your 
service provider doesn't offer this capability, 
there are numerous web presence providers on 
the web that offer reasonable rates for both 
and non-commercial purposes. 


an create them! 


commerci 

Web pages are created using plain ASCII text 
and special formatting codes known as /ITML or 
HyperText Markup Language. You may have 
noticed that some businesses are selling 
commercial PC and Macintosh packages which 
create Web pages and cost a lot of money. 
really aren't necessary. HTML codes (or “ 
arejust plain textand can be created in any word 
processor or text editor which allows you to save 
text in true ASCH format. 


These 


What's Out There? 

Before you jump into creating WWW pages, it 
helps to know what's already out there, how 
others have designed their pages, and the types 
of things they've included. The following list of 


COMMODORE WORLD 


Ly Gaclyne R. Moranec 


SPINNING THE WEB 


Commodore related websites serves two 
purposes. First, it’s a place on the web to find 
Commodore support. Second, by seeing how 
others have designed their sites, you can get 
ideas on creating your own. 

One of the most common things you'll notice 
is that most websites are linked to others. Many 
times it’s a reciprocal thing 


if you include 


link to someone else’s site, they in turn include 
link to yours. The places you include links to will 
depend on your interests and the overall content 
of your website. 

There are so many web pages out there, it's 
hard to know where to begin, But, why not try a 
few of my 


crite sites? 


skaiwan,com/~sirfitz/qlink.html 
.portal.com/~steward/qlink html 


When Q-Link closed its doors on October 31, 
1995, 1 didn’t think I'd miss it, but a recent 
World Wide Web tour of Q-Link home pa 
reminded me that what made Q-Link special was 
the people who made it fun to be there. People 
like Sir Fritz (Charles J. Fritzhugh), JohnD39 
(Steward), and Squirrel’s Nest John Purkey) who 
have created a place on the Internet for those 
who enjoyed Q-Link and remember it fondly. 
These home pages are more than just a shrine to 
a “dead offline service”, due in part to the 
interactive items they've added to their pages, 
like a “gRiFiTt!” (graffiti) wall to post short 


38 


messages and a registry of Q-Link screen names 
and Email addresses so you can catch up with 
old friends. Browsing the list of names, it’s 
interesting to note how many people have kept 
their screen names t of their Internet 
addresses. Links to former Q-Link users web 
sites are also included. The Q-Link sites are 
integrated together in such a way that they are 
almost seamless, Nothing is repeated and 
everything is shared between the pages. 


hutp://Awww2.ari.net/home/jpurkey/qscreens,html 


This site has screenshots of the Q-Link load 
screens that were seen whenever moving to 
different areas on the service. Theseareavailable 
as a C64 program to download, and within this 
63 block program there's a menu with all 37 
screens for vi ng. The screens can be 
downloaded (or viewed with a graphic browser) 
asindividual GIFs oryoucan download thewhole 
collection in a PKZip 1.x archive. Purkey’s site 
also includes a short library of classic Q-Link 
files to download straight from the web. 

QcLink the service may have died a senseless 
and agonizing death, but Q-Link is (or was) not 
so much an online service as a feeling of 
belonging, anda mutual meeting place for many 
kindred spirits. The serviceis gone, but the spirit 
is alive and well in these web pag 


as: 


eS. 


SIDS 
http://stud 1 tuwien,ac.at/~e9426444/index.html 


Ibelieve that SID music never would have gained 
its popularity if it weren't for Q-Link and other 
online services. I'm sure the ability to share ones 
creations with others contributed to the strong 
popularity. The SID home page has 
interviewswith composers, ahistory of SID music, 
and you can even vote for your favorite tunes. 
Links to other SID related sites can also be found 
here. 


amples, 


Issue 11 


Creative Micro Designs, Inc. & 
Commodore World 
Attp://www.msen.com/~brain/guest/emd/ 
index.html 


You can read about how CMD got started and 
how it’s progressed over the years by selecting 
“More AboutCMD" from theirhome page. There 
is an online sample of this magazine (I have two 
articles in the online issue). You can browse the 
“Table of Contents” and read articles online. 
CMD's productsare highlighted in their Product 
Information pages, and to make looking up 
specificitemseasier, theyare grouped by category. 
This area was under construction when I visited, 
but may be completed by the time you read t 
To help users keep up with the current prices, 
CMD hasa dated Price List of the items they carry 
and their shipping charges. From CMD's home 
page, you can also connect to Jim Brain's 
Commodore WWW Links or the popular Yahoo 
Index of fun places to visit on the net. 


Softdisk Publishing and Loadstar 
ttp://www.webcom.com/~sofidisk/c64, html 


Loadstar’s home page has information about the 
two disk magazines published by Softdisk 
Publishing: Loadstar and Loadstar 128 Quarterly. 
When | visited, the software products listhadone 
item, “The Compleat Series”, which didn't havea 
description. Hopefully it will be more “compleat” 
later. The site has ordering information for the 
magazines, and software items, with specials for 
those ordering items from the website. A sample 
“Table of Contents” shows the type of programs 
and articles which normally make up an issue of 
Loadstar. Several articles are also available to 
read, including programming columns(“When is 
Your Program Fi 2”) interviews (“Interview 
withCMD"), reviev ynth ToneGenerator”), 
and others (“Miscellaneous Hints & Tips”). This, 
site has several links to other Commodore related 
web sites. 


Commodore Format Magazine 
http://www. futurenet.co.uk/computing/ 
commodoreformat.html 


Commodore Format magazine is 
publication. Itshome page hi leofeontents 
for recent issuesas well asa list of software which 
they sell. While a bit on the spartan side, its link 
to FutureNet Computing News makes up for it. 
FutureNet Computing News offers some of the 
best computing news available. You can get the 
latest computer news from the net sometimes 
weeks or months before you see it in print. 


a British 


Volume 2, Number 6 


Software Support International 


gopher://gopher.soonet.ca/ 


11\COMPUTERSMITH 
Aitp://www.soonet.ca/~compsmth 


Computersmith offers most of Software Support 
International's Summer '95 Commodore/Amiga 
catalog via Gopher, and possibly via WWW b 
time this article is published, which is why I've 
included them here. When I asked 
Computersmith’s owner, Allen Smith, if the 
catalog was sanctioned by Sofiware Support 
International, he toldme “SSI supplied the text to 
me(asa WordPerfect file)and gave mepermission 
touseitin the way [have. |, in turn, am doing this 
both as a service to all Commodore (8-bit and 
users, as well as to try and g generatealittle 
businessformyself. My businessbeingaC: 
Dealer for SSI products.” The SS! 
otherinformation can also be retrieved vi 
To find out more, mes: 
info@compsmth.soonet.c: 


jalog and 
mail. 


age 


send a to 


Computer Workshops 
Attp://www.armory.com/~spectre/ewi.htm! 


Computer Workshops is a software company 
which supports the Commodore 8-bit line as well 
as MSDOS. Commodore software highlighted at 
this site are “Flyer” and “MahGong” which are 
commercial games available directly from the 
company. Descriptions of the games are given, 
along with review comments from the now 
defunct Gazette magazine. Two sh: 
releases, “NewView” and “HyperLink 
described. The programs are available via FTP, 
but theFTP sitewasn’t(attime ofresearch) linked 
into the web site. 


CNet 64 DS2 BBS 
Attp://weww.infinet.com/~mbendure/ 


Michael Bendure’s CNet 64 DS2 BBS home page 
includes personal background about the man 
behind the networking software as well as 
support for his BBS software, the network it uses 
(DS2) Network v3.04), and ComNet 
development. ComNet is a dream of Bendure’s 
in which all Commodore BBS's (regardless of 
software) have an integrated network so they 
can share messages and files between them. 

$2. BBS sysops 
isplanned, butinthemeantime, thoseinterested 
in learning about the bulletin board system can 
check out the featuresand hardware it supports. 
This also has Commodore hardware and 
software listed for sale and links to other CBM 
related software. 


39 


RMS Computer Systems (CNet 128) 
Attp://www.msen.com/~brain/guest/rms/ 


When I visited the RMS Computer Systems home 
page, it was still under construction. RMS 
Computer Systems sell and support the CNet 128 
BBS system and computer systems parts and 
accessories. RMS plans to have a support area 
within the web site so registered sysops can get 
updates, documentation and other support 
regarding the operation of the CNet 128 Bulletin 
Board System, As of thiswriting, this site hasa list 
of BBS features and hardware requirements as 
well as information about how to reach the Cave 
Of Cerberus BBS, which is C-Net 128's support 
Board. 


Jim Brain’s Commodore 8-bit Site 
Attp://www.msen.com/~brain/ebmhome.himl 


Jim Brain's site has become one of the major US 
places to check out Commodore developments. 
Most Commodore related web links can be found 
here and the links are continually updated. 
Features here include the ability to read the 
comp.sys.cbm FAQ ile in HyperText format and 
links to other Commodore related FAQ files such 
as comp.binaries.cbm and the C64 emulator 
newsgroup. Youcan find theanswers to the Tri 
questions in this magazine , read issues of C= 
Hacking (a Commodore magazine on the net) or 
you can learn about Jim's business, Brain 
Innovations, Inc. 


Craig Bruce’s ACE and LLR 
http://cenga.uwaterloo.ca/~csbruce/ina 


xhtml 


Craig Bruce is a Canadian programmer, His 
website has a mixture of information about 
himself and about some of his popular programs 
like ACE, Little Read Reader and others. He has 
links to the FTP site where his programs can be 
downloaded, and lists of other places of interest 
to Commodore users. Craig also has a few UNIX 
utilities which he's written, and help files for 
UNIX Vi and EMACS editors on his site. 


Rod Gasson’s QWKRR128 
hitp://www.msen.com/~brain/guest/ 
Gaelyne_N foranec/qwkrr/ 
Attp://www.msen.com/~brain/gquest/ 
Gaclyne_Moranec/qwkrr/browser.himl 


Rod Gasson doesn't have a home page, but two 
of his programs, QWKRR128 and Browser, do 
havea home on the web, under my wing. When 
Iset up my personal home page, I decided toadd 
support for QWKRR as an experiment in using 


COMMODORE WORLD 


the World Wide Web to show how it could be 
used to offer support for shareware and 
commercial programs.The QWKRR pages 
consist of updated information about support 
files which weren't available when QWKRR128 
v4.3 was released. Youcan even register QWKRR 
while on the Web. The Browser pages let you 
become a Beta Tester; you can download the 
work “in progress” of frequently updated 
versions right from the World Wide Web. 


Gaelyne Moranec’s Home Page 
http://www.msen.com/~brain/guest/ 
Gaelyne_Moranec/ 


I've included links to most if not all of the web. 
pages listed here, FTP links to Commodore files, 
a type-in term program that a reader in Italy 
asked me for, on-going lists of favorite CBM 
programs, BBS's which support us, a Guest page 
to sign, and links to my articles in Commodore 
World's online sample magazine issue. (Oops, 
my modesty just left me again!) A special site on 
my page has been added:a tutorial on HyperText, 
and examples of magazine pages on the web. The 
URL for the tutorial is http://vww.nsen.com/ 
~brain/guest/Gaelyne_Moranec/learn.html, 


D 


World Wide Web Alternatives 


Web Surfing via Telnet 

For those using online services who need to 
telnet to use Lynx, thisis telnet site allows you 
to use the “Go” command to go to any of the 
URL’s listed in this article: 


Telnet to: fatty.law.cornell.edu 


Atthe first prompt, type “www”, Don't forget 
to set your terminal emulation to VPL00 (or 
V7T102). GEnie users should turn off echo 
before beginning the telnet session. 


Web Surfing by Email 
If your only access to the Internet is vi 
ive web pages by Email. S 


mail, 
imply 
send a message with no subject line to 


you can re 


webmail@curia.uceie on the first line of the 
message type the word “go” followed by the 
URL you wish to view, such as: 


go hitp://www.ncsa.uiueedu/General/laternet/ 
WIWW/HTMLPrimer html 


COMMODORE WORLD 


URL Listings in Carrier Detect 


Q-Link 

http://www. Kaiwan.com/~sirfitz/qlink html 
http://www portal.com/~steward/qlink html 
hutp://www2.ari.net/home/jpurkey/qscreens.html 


sIDS 
http://stud1.turvien.ac.at/~e9426444/index, html 


Creative Micro Designs, Inc. & Commodore World 
Aup://www.nsen.com/~brain/quest/emd/index. html 


Softdisk Publishing 
Attp://www.webcom.com/~softdisk/c64.html 


Commodore Format Magazine 
Attp://wwiw.futurenet.co.uk/computing/commodoreformat.html 


Software Support International 
gopher://gopher.soonet.ca/11\COMPU: 
hitp://www.soonet.ca/~compsmth 


SMITH 
Computer Workshops 
http://Avww.armory.com/~spectre/cwi.htmt 


CNet 64 DS2 BBS 
htip://wwww.infinet.com/~mbendure/ 


RMS Computer Systems (CNet 128 BBS) 
http://Avww.msen.com/~hrain/guest/rms/ 


Jim Brain’s Commodore 8-bit Home Page 
http://www.msen.com/~brain/chmhome htm! 


Craig Bruce’s ACE and LLR 
http://ecnga.uwaterloo.ca/~esbruce/index,html 


Rod Gasson’s QWKRR128 
http://Avwww.msen.com/~brain/guest/Gaelyne_Moranet/qukrr/ 


Gaelyne Moranec’s Home Page 
http://www.msen.com/~brain/guest/Gaelyne_Moranec/ 


The tutorial on HyperText 
http://www.msen.com/~brain/guest/Gaelyne_ Moranec/learn.html 


Web Browse 
http://vww.beta.yahoo.com/ 


FTP files from ccnga.uwaterloo.ca 
Jipsget//cenga.uwaterloo.ca/pub/chin/telecomm/ 


CompuServe Telnet Session 
telnet;//compuserve.com 


HTML Guide 
http://www.ncsa.uiucedu/General/Internet/ WWW/H TMLPrimer.iitml. 


40 


Issue 11 


+ Uses Standard Cable 
Equipped with a female DB-25 
le connector to allow use of 
standard ‘PC’ printer cables. 
* Switchable Pass-thru 
Allows connection of printer and. 
other user port peripherals such 


GEOCABLE i] === 
Parallel Print Cable 


The Most Advanced Parallel Print Cable Ever! 


« Faster Output 
Parallel printing offers up to a 
40% increase in output speed. 
* GEOS Drivers Included 
Includes GEOS drivers plus 
useful GEOS ulilities like 
MacAttack II, WronglsWrite, and 


Cw & RUN BACK ISSUES 


For years, RUN Magazine provided Commodore Users with a 
great source of information, and now CMD has given you 
Commodore World. Don't let this valuable information slip 
away—fill in the voids in your library now! 


RUN Magazine Back Issues 
sues for $12.00, any 6 for $18.00, 
or any 12 for only $24.00 


RMJAN88 January 1988 RMOCT89 October 1989 
RMFEBSS February 1988 RMSP89 Special Issue 1989 
RMMAR88 March 1988 RMJAN9O January 1990 
RMAPR88S April 1988 RMMAY9O May 1990 
RMMAY88 May 1988 RMJUN9O June/July 1990 
RMJUNS8B June 1988 RMDEC9O December 1990 
RMJUL88 July 1988 RMJAN91 Jan/Feb 1991 
RMFEB89 February 1989 RMJAN92 Jan/Feb 1992 
RMMAY89 May 1989 RMMAR92 March/April 1992 
RMJUN89 June 1989 RMMAY92 May/June 1992 
RMJUL89 July 1989 RMJUL92 July/August 1992 
RMAUG89 August 1989 RMSEP92 = Sep/October 1992 
RMSEP89 September 1989 RMNOV92 Nov/December 1992 


Shipping: 3 or 6 issues - U.S. $3.00, Canada $5.00, Foreign $15.00; 12 issues. 


U.S. $5.00; Canada $7.00; Foreign $20.00. 
Commodore World Back | issues 
$4.95 each, or any 3 for on! 


as modems without conflicts, GEOS GONVERT. CW1 Issue 1, Volume 1, Number 1 CWE Issue 7 tae 2, Number 1 
GEOCABLEAI(6{t.) ONLY $29.00 GeoCablellis compatble wth GEOS, Perfect CW2 Issue 2, Volume 1, Number 2 CW7 Issue 7, Volume 2, Number 2 
GEOCABLENI (15%) ONLY $24.00. Pint LO, Acton-Feplay MK Vi, Superbase, CW3 Issue 3, Volume 1, Number 3 CW8 Issue 8, Volume 2, Number 3 

Shipping: US $5.00, Canada $7.00, ‘Superscript, Papercip Ill. and allsoftware tat CW4 Issue 4, Volume 1, Number 4 CW9 Issue 9, Volume 2, Number 4 


Foreign $25.00. supports user pont parallel printing. 


\CraD 


Issue 5, Volume 1, Number 5 CW10lssue 10, Volume 2, Number 5 
Shipping: U.S, and Canada $2.00 for first issue, plus $1.00 per additional 
issues,; Foreign $5.00 per issue. 


Creative Micro Designs, Inc. 


P.O. Box 646 Orders: 800-638-3263 
East Longmeadow, MA 01028 Info: 413-525-0023 


For years, Commodore set the standard with the 1351 
Mouse. Sure, it was vastly superior to using the old digital 
input devices like the 1350 mouse, joysticks or imitation 
trackballs. But everything can be improved. Guaranteed 
100% 1351-compatible, SmartMouse and SmartTrack 
do everything the C-1351 does and more! These highly 
intelligent, three-button input devices include a built-in 
battery-backed Real-Time Clock, along with double-click 
and Turbo features for GEOS. Plus, they come with a 
complete set of utilities for using the clock in GEOS and 
BASIC applications. Modern ergonomic designs make 
these devices smooth operators that are a pleasure to 
use. So, if you're tired of the slow, erratic movement of 
your current input device, make the intelligent choice and 
pick up a SmartMouse or SmartTrack today! 


* Three buttons means convenience! If you're a GEOS user, the left * 
button is configured as single click, the right as a handy double click 
and the center button is the TURBO button. When depressed, it 
doubles the speed at which the pointer moves across the screen. 
Additionally, programmers can assign their own functions to all 
three of the buttons. 


* Unlike other third party mice or trackballs, the CMD SmartMouse and 
SmartTrack trackball use the same custom gate array chip as the 
Commodore C-1351 mouse. This guarantees 100% compatibility. 


‘SmartMouse/SmartTrack utilize the same advanced technology used 
in today’s powerful 486 and Pentium PC's, providing you with 
unparalleled accuracy and smoothness. 


+ Built-in battery-backed Real-Time Clock automatically sets the GEOS 
clock, displays time and can be used in your own programs. 

+ Includes utilities disk and detailed manual explaining the utilities 
and programming information. 

* Attention Lefties! SmartMouse can be altered for left handed use. 

* Don't be fooled by the old style digital "trackballs". These only 


perform as well as a joystick. SmartTrack uses analog inputs for 
greater accuracy. 


+ Switches easily into joystick emulation mode on power-up by holding 
down the right button. 


Volume 2, Number 6 a COMMODORE WORLD 


Over The Edge 


By Don Radler 


K> 


VIRTUAL REALITY: A PLANNED DISASTER? 


Technology, as you might have noticed, often 
has a few unexpected consequences. 


ITEM: When Henry Ford figured out how to 
put each of us into one of his automobiles, he 
didn’t plan on helping to launch the sexual 
revolution, But the freedom the automobile 
provided for many young couples, 2 
hack seats hidden from sight by sheets of steel 
Were just too tempting. 


ndall those 


ITEM: When Dave Lennox sold the public on 
putting his air conditioners into more and 
more rooms, he didn’t mean to help criminals. 
Besides cooling off Mom and Dad inside 
(instead of on their front porches or stoops, 
leaving the streets un-watched) it was also 


easier for burg! 


s to gain entry to the house 
by popping the units out of the windows. And 
there went the neighborhood. 

ITEM: When Lee De Forest laid the 
groundwork for television, he wanted to beam 
culture into our homes, Look what we ended 
up with! Gangsta rap at breakfast, tabloid- 
talk shows and soap operas starting at lunch, 
feminine hygiene commercials and graphic 
ccompanying dinner, and 
pornography on into the wee hours of the 
morning. 


scenes of warfare 


Even smaller technological changes can have 
large effects. For example, we derived a sense 
of community and connection to each other 
when there were only three networks, and all 
of us were watching Ed Sullivan at the same 


COMMODORE WORLD 


time. The next day, in every office and factory 
and restaurant, last night's “shew” (Sullivan's 
much-imitated pronunciation of “show") was. 
tion. Now, with over 50 
s the norm and 500 promised, 
what you looked at last night doesn’t figure to 
be what I watched at all. 

Similarly with Alexander Graham Bell's 
T&T tells you to 
reach out and touch is more than likely going 
nd MC's 


the topic of conve 


ble channel 


invention: the “someone” 


to be an answering machine, 


au CIS 
er 

q 

1 


“friends and family” are usually not people at 
all, but the gadgets that speak and listen for 
them. In the absence of real, live people, 
community can’t exist; the motivation for 
inventing the telephone has already been 
defeated by the way newer technology 
enhances its use. 


42 


Moving from analog cyberspace to digital, 
we come to the much-vaunted information 
superhighw there are literally 
thousands of Special Interest Groups (SIGS) or 
Round Tables (RT's), where people of narrow 
focus type messages back and forth in the belief 
that they are thereby broadening their 
horizons. Thus, the ever-expanding roster of 
online enthusiasts becomes not a community, 
but a collection of inward-looking electronic 
tribes. Ultimately, those tribes can be expected 
to do battle with one another over the available 
bandwidth, just as tribes are proving their 
humanity in places like Bosnia and Somalia 
today. 

Finally, we arrive at the ultimate anti- 
community, virtual reality, Here, hardware and 
software conspire to bring you inside 
computerized environment, experiencing it 
with several senses at once and responding to 
it asa participant rather than a mere observer. 
You may wear a headset or special glasses to 
see scenes in full-color 3-D and hear things in 
surround sound; you may wear gloves that act 
like a mouse or a joystick but also feed back the 
feel of things; you may even climb into a full 
body suit to generate these experiences. 
However, our understanding of human 
perception meshes with our ability to design 
hardware and software to fool ourselves. VR 
will pull us into the machine and make us 
experience simulated events rather than just 
see and hear them from outside, With this 
ability, we can play - or even learn. 

Bennett Davis, writingin Discover Magazine 
back in June 1990, said this about it: “Many 


Here, 


Issue 11 


researchers see complete modestly-priced 
‘personal reality simulators’ little more than a 
decade away, and they already worry about 


CouLD IT BE 


Sounds more than a little like where VR is 
headed, doesn't it? And these quotes from a 
Huxley character just might have explained 


the consequences.” THAT THE what's driving it: 
Davis quotes Thomas Furness, pioneer of CONSEQUENCES 

simulators for the military: “It's not like OF THIS “Industrial civilization is only possible when 
elevisi apersonale or, Wil d there’s no self-denial.,.otherwise the wheels 
television or a personal computer. With those, TECHNOLOGY ? a Hee 
you're still on the outside. Once that field of stop turning...Jmagine the folly of allowing 
view surrounds you and controls everything WERE PLANNED people to play elaborate games which do 
you see, you're inside. The social implications ALL ALONG? nothing whatever to _ increase 


are of great concern to us.” 

The downside is the 
immature people. Virtual re 
people want them to do, and that’s not the 


ion of socially 
alities willdowhat 


way the real world works, This can be a 
tremendous medium through which to learn, 
but it can also hinder people from learning 
other real things in the real world. Are we 
ready for a world dependent on artificial 
experiences’ 

Youcould “virtually” strangle someone. You 
could have a virtual chain-saw massacre, You 
could use this to experience all kinds of 
expressions of deviant behavior, and through 


it people could become inured to violence or 
perversion in real life, much like children 
confused by the concept of make-believe versus 
real life. Many years earlier, Aldous Huxley 


singing, 


| Click Here Software’s 


or computer running a fax modem 
* User-friendly and easy to operate 
° Auto-answer mode for unattended operation 


. flanual send/receive mode lets you share phone 
line 


* Built-in functions convert faxes to geoPaint files 
* geoPaint files may be faxed without conversion 


* Built-in printing functions for printing fax 
documents and geoPaint files 

¢ Printer drivers may be selected directly from 
within the program 

° Full-page scanning into geoPaint is possible 
using a standard fax machine as a scanner 


° Built-in simple terminal program lets you browse 
telecommunications services 


¢ SEND & RECEIVE FAXES to/from any fax machine 


Is OUR NEED FOR 
GADGETS AND 
SPEED WHAT THE 
DIGITAL FUTURE IS 
REALLY ALL 
ABOUT? 


foreshadowed this concept in his book Brave 
New World, Here's one example: 


consumption...We don’t want people to be 
attracted by old things. We want them to like 
them to like the new ones,” 
Could it be that the 
consequences of this technology were planned 
all along? 
computers”? Is our own refusal to deny 
the of 
“technological advancement” being exploited 


unexpected 


he proverbial “world run by 


ourselves anything in name 
by the richest among us? Is our need for gadgets 
and speed and their greed for money and power 
at the digital future is really all about? 


“Three weeks in a helicopter. An all-super- 
synthetic-talking, 
stereoscopic feeling, with synchronized scent 
organ accompaniment,” 


colored, %) 


* Commodore C-64, C-64C, C-128, 128-D computer 
* GEOS 64 or GEOS 128 version 2.0 
* SwiftLink RS-232 cartridge 

* Group III, Class 2 fax modem 


* GEOS compatible disk drive (large capacity drive 
or RAM disk recommended but not required) 


geoFAX & 
SwiftLink ... 


geoFAX, SwiftLink 
& BOCA 14.4 Fax 


GeOFAX......00006 $39.95 
SwiftLink «20006 $39.95 


BOCA 14.4 
Fax Modem .. $129.95 


Creative Micro Designs 


Volume 2, Number 6 


COMMODORE WORLD 


Harp Ties 


CHANGING DISK DRIVE DEVICE NUMBERS 
By Doug Cotton 


One of the most often asked questions we get is how to change device 
numbers on disk drives, While the 1541-IL and 1571 drives were created 
with DIP switches for convenient device number configuration, Commodore 
efi this convenience out of previous 1541 drives, and the 128D, They did, 
however, at least make such changes possible directly on the cireuit boards. 
Yes, you've got to get under the hood to change the device number. 

Commodore also provided information in the 1541 User's Ma 
number changes. Unfortunately, the instructions were wrong 
in some editions, and often didn’t match the revision of the 1541 circuit 
board in the drive that the manual came supplied with, 

So, after a little prodding, we've put together this illustrated guide to 
‘h of the older 1541 models, as well as on 
the 128D. In addition, we've covered installing switches that will let you 
make device number changes whenever you like, 


ual on 


changing device numbers on e 


Tools & Other Required Goods 
Asa bare minimum, you'll need the following itemsin order to change your 
1541's hardware device number: 


- A Phillips-head Screwdriver (#2 should work nicely) 
- An Exacto Knife (or other precision utility knife or blade) 


In addition to these items, I'd also suggest a magnifying lens of some type 
(for the close work), anda good light source. Ifyou want to install switches, 
you'll also need the following: 


- One or twe Ainiatur 
-A Soldering Iron or Pencil 
- Solder (electronic circuit variety) 

- Hookup Wire (28 gauge stranded) 

- Asmall pair of Diagonal Cutters (Wire Strippers would be handy, too) 
- A Drill and Drill Bit (to provide the hole for mounting the switches) 


oggle Switches (SPDT will work as well) 


Here we go... 

We'llstart off with disassembly. Start by removing the screws that hold the 
case together (these are located in recessed holes in the bottom half of the 
case on the 1541 models, and on the back of the 128D case). After you have 


DISCLAIMER 
Information in this column is presented for educational purposes 
only, In no event will Commodore World or Creative Micro Designs, 
Inc, beliableforany direct, indirect or consequential damages resulting 
from the use or misuse of this information, 


the screws removed (and safely tucked away where you won't lose them), 
remove the upper half of the case. If you're disassembling a 1541, you'll 
need to remove the metal shield that covers the cireuit board (there are two 
screws located on one side). Those of you with 128D’s will have to remove 
the drive itselfby removing the three screws that hold it in place (one on the 
left side, two on the right), pulling the lever off the front, and sliding the 
mechanism backwards into the case. 

‘The next step for 1541 users is to determine which revision of the circuit 
board you have. There are three main types to be concerned with, and these 
are shown in Figures 1, 2 and 3. If your drive (like most) has the “short” 
board (Fig. 2), then check around the edge ofthe board for the revision level 
(A, Bor C), 

Now check Figures 6 through 10 to locate the Jumper Pads used to 
program the device number for your unit. Jumper Pads look like two 
silvery circles, each having a split down the middle, except at the very 
center where a trace bridges the two halves of each circle together (see 
Figure 4 for a closer view). To change the device number, we need to cut 
away the bridge on one or both of these Jumper Pads (this is detailed in 
Figure 5). Which pads do what? The chart below shows you, Note that the 
pads have numbers by them, either a 1 and 2 or J1 and J2 (there are two 
exceptions where the pads aren't marked—the 1541 Rey, C short board, 


Jumper Pad Device Number Programming 


Device Number 8 9 10 ab 
Jumper 1 or J1 Closed Open Closed Open 
Jumper 2orJ2 Closed Closed Open Open 


Figure 1. 1540/1541 Long Board 


COMMODORE WORLD 


Figure 2. 1541 Short Board 


44 


Figure 3, 1541C Board 


Issue 11 


and the 128D—so we've added numbers to the pictures that show the pad 
locations). 

Note the terminolgy used in the chart: “Open” indicates that the bridge 
trace has been cut, while “Closed” indicates that it has not (or that the two 
pad halves are connected by other means, like a switch or solder bridge). 

Ifyou're making a permanent change (and not installing switches), pick 


ou want and cut the appropriate traces (see Figure 5) 


the device number 
with an Exacto knife, If you're installing two switches, cut both; 
installing one switch, decide what device numbers you want available by 
referring to the chart, and cut one or both pads accordingly. (There are a 
lot of possible device number combinations that can be achieved using a 
single switch, but most users usually just cut J1, or Jumper 1, and installa 
switch on it to provide switching between devices 8 and 9.) 

Be sure to examine your work to make certain the cuts completely 


seperate the pad halves. If you're not installing switches, reassemble and 
test your unit. If you're installing switches, continue on. 

Se 
mounting hole(s). Now prepare two wires for each switch, long enough to 
reach from the Jumper Pad locations to the switeh mounting hole(s) with 
a couple of extra inches of extra slack, Strip off an eighth of an inch of 
insulation from both ends of each wire. 


ct a location to mount the switch(es), and drill the appropriate 


Solder two wires to each switch; one to the center terminal, and the 
other to the outside terminal. (Ifyou're using SPDT switches, use either of 
the outside terminals and ignore the other.) Now solder the other ends of 
thewires to the two halves ofthe pads, one wire to each pad. Make sure t 
you don’t short the pads together with your solder, and cut aw 
excess wire. Also be sure that the wires from each switch go to the s 
number Jumper Pad. 

Once you've finished, examine your work carefully, and after you're 
certain that all is correct, reassemble and test your unit. 


Top Half 
Bridge 
Bottom Half 


sistas 


Cut away the 
bridge to 
separate 


the top and a 


bottom halves. 


Figure 6, C-128D Jumper Pad Location Figure 10. 1541C Rev. A Jumper Pad Location 


Volume 2, Number 6 45 COMMODORE WORLD 


ROUTINE STUFF 


HPROGRANMIS T 


by Maurice Randall 


Let's start getting into some of the GEOS Kernal routines and see how we 
can use them effectively in our programs. In this issue, I will cover some of 
the more general routines that you might be likely to use. These will be 
routines that perform actions on memory or help out with math 
calculations. In a future issue, we will get into the routines that involve 
graphics and other screen display routines. 

Thave always felt that a computer programmer should be comfortable 
with math. After all, isn’t that basically what a computer is doing? It is 
alculating addresses and offsets. That is all taking place at the 
processor level of the machine. At the programming level, we might need 
to calculate a game score, or multiply a dollar amount by a quantity, or 
perform some other typical calculation, Sometimes, developing a math 
routine to perform these jobs can be quite tedious. The GEOS 
provides us with some built-in routines that will help us outin many 
Let's take a look at some of the more helpful ones. 


It’s Dividing Time 

Perhaps the most difficult of the standard math functions to write in 
machine language is division. Once the concept is understood, it is not 
that big of a deal. But comprehending it and understanding it can be 
tric 
problem such as 379 divided by 23. How would we write a routine to 
perform this calculation? In GI nple to use the Kernal routine 
called Ddiv, Ddiv gives us the ability to dividea 16-bit number by another 
16-bit number as the following example shows: 


anditisalso easily misunderstood or forgotten. Takea simple math 


LoadW r0,#379 
LoadW r1,#23 


jdivide 379 
jby 23 


Idx #0 3 points to r0 
ldy rt iy points to rl 
Jsr Ddiv jperform the division 


Upon return from Ddiv, the zero page register that x was pointing at, 
which wasr0, will be holding the quotient result of the division and r8 will 
be holding the remainder, ifany. Since we were dividing by 23, which is 
less than 256, our code could assume that r8H is zero and only need to 
check r8L for the remainder. In this example, r0 will now contain 16 
the remainder, which is 11, will be in r8L. 

Ddiv does not limit you to using r0 or rl. You could use any of the 
available registers such as a0 through a9. Just be sure not to use r8, 
obviously, or r9 which is also used by the routine. The important t 


COMMODORE WORLD 


46 


that xis pointing at the number that will be divided by the number that y 
is pointing at. 


Multiplying Is Just As Easy 

Thenice thing about using the GEOS routines is the similarity in how they 
are setup. This makes it easy to remember each time you need to use the 
routines. Let’s see how multiplying looks the same as dividing. This time, 
we will multiply 379 by 23. The routine that is used is called DMult and 
actly the same as Ddiv, except that it gives us the result of a 
ion instead of a division, 


LoadW r0,#379 jmultiply 379 


LoadW r1,#23 by 25 

Idx #r8 i points to ro 

Idy #rt sy points tort 

Jsr Dmult iperform the multiplication 


This time, the 16-bit result will also be found in r0 upon return from 
DMult. Obviously, there won't be a remainder in this case, however the 
result of a multiplication could very easily exceed 16 bits, If the result is 
greater than Sffif( or 65,535 ), the carry flag will be set, Aslong as the carry 
flag is clear, you know the result is entirely contained within r0, In our 
imple, r0 will contain $220d, or 8717 in decimal. 

There are also two other multiplication routines available, One is called 
BMult for multiplying an 8-bit byte times a 16-bit word, and the other is 
BBMult which will multiply one 8-bit byte by another 8-bit byte. Each 
routine will return a 16-bit value. These two routines operate almost 
exactly like DMult except that where a single byte is used, only the low- 
byte of the register will be needed. The register that is pointed at by x 
always gets the result, and it is always a 16-bit result. In the case of BMult, 
x must point to the 16-bit value, while y points to the 8-bit value. Once 
multiplied together, the result will be in the register pointed at by x. 


e 


Counting Down To Zero 

Ddeccan bea handy routine when you need a 16-bit counter. Let's say you 
are reading bytes from a buffer and you want to make sure that you only 
reada specific number of bytes. Maybe the buffer begins at $5000 and you 
want to read in 1000 of those bytes and send each one individually to 
another routine for whatever reason, You could put the value of 1000 into 
a register and let Ddec decrement the value each time a byte is read and 
processed. Here’s how it might look: 


Issue 11 


start0fBuffer =$5000 


LoadW r6,#start0fBuffer 


LoadW r2,#1000 jcount down from 1668 


10S 
ldy #0 jread the byte pointed at 
Ida (r0),y sy r0 
Jsr ProcessByte ;go do whatever with it 
inc rOL jpoint rO to the next byte 
bne 20$ 
inc roH 

208 
Idx #r2 spoint x at r2 
jsr Ddec jecrement r2 
bne 10S ibranch back if not zero 


As you can see in the example, all we have to do is set x to the value of #r2 
and let GEOS decrement it for us. By testing the zero flag, we will know if 


we have processed 1000 bytes y 
that does the processing will have to preserve both r0 and r2, or we will 
have a bug on our hands. 


- Of course, in this example, the routine 


‘There area few other math routines, but I find these to be the ones that 
Tuse the most. 


Clear Your RAM 

Here's a pretty important routine, it’s called ClearRam. I use this one 
mostly when a program first gets loaded and run. | use it to clear out a 
variable area, It’s common for you to establish a variable area that begins 
just after the end of your program code, in an area that you might define 
as ramsect with GeoAssembler. Well, when your program is first loaded, 
there is no gua Ifyou just start letting your 
code run, you might get to a routine that checks one of your variables and 
ifit contains the wrong byte, it could mean trouble. So, try to make a point 
of clearing out this area before getting too far into the running of your 
program. Itis also simple to use, as you will see. 


isin this are 


LoadW r0,#50 
LoadW ri,#startOfariables 
dsr ClearRam 


;Zero out 50 bytes 
;beginning here 


Inthe above example, startOfVa 
will clear out. In this area, we have 50 bytes that need clearing. You can use 
ClearRam to clear out any siz ‘a anywhere within the computer's 
memory. 

As you can see, GEOS has routines to help us programmers out. Make 
nd will also be more 
compact. Let's take a look at some more of these easy to use routines next 


ablesis the beginning of thearea thatwe 


use of them and your own code will be easier to write 


issue. 


Volume 2, Number 6 47 


CKit 94! 


It's Cool 
Cit 94 is a powerful collection of backup utilities designed to take 
advantage of the expanded Commodore systems of the 90's. In fact 
the Ckit is so advanced, we recommend it only for certain 
Commodore systems, 


If You Have One Of These 
Commodore 64, 64C, 128, or 128D 
And One Of These 
CMD RAMLink, PPI RAMDrive, or a 17XX REU with JiffyDOS 


And At Least One Of These 
Commodore 1541/1571/1581 or any CMD Storage Devi 
*# YOU NEED THE CKIT 94! ¢ 


It's Mean 
Ckit 94 can view, select, and copy over 1,000 files! It can also copy 
entire 41/71/81 disks in ONE pass. It can even make the next copy 
directly from RAM. With the CKit you can squeeze over 700 files into 
an archive. Even more, you can squeeze your 41/71/81 disks and 
CMD partitions into backup files. All of this power is at your 
command through an easy to use menu driven interface, 


File Utilities 
Filemaster file copier and the Archiver file squeezer 


Disk Utilities 


Procopy disk copier and the 41/71/81/Native Boa disk squeezers 
BBS Utilities 
New Dissolver SDA maker and fast PD 


ompers 


It's Better 
Ckit 94 has 2 X faster and tighter compression than in previous 
versions. All of the utilities have been enhanced for power and speed. 
Plus, it has three new poweriul utilities. And it takes full advantage of 
Commodore 128's and REU's. Wow! 


ck Out The Support 
¥ Commodore 1541/1571/1581 Drives 


¥ CMD Hard Drives/Floppy Drives/RAMLinks 
¥ PPI RAMDrives 


¥ Commodore 128 VDC RAM Support (16K and 64K) 

¥ Commodore 128 2MHz Enhanced Mode Support 

¥ Commodore 17XX REU Support (up to 16Meg) 

¥ RAMLink and RAMDrive DACC Support (up to 16Meg) 


Get Your Copy Now! 
CKit 94 is available at fine Commodore mail order outlets such as 
Creative Micro Designs. You may also order directly from us. 


Mad Man Software, Inc. 
1400 East College Drive 
Cheyenne, WY 82007 
(307) 632-1178 Information 


Enclose Cheek or Money Order for: 

CKit 94 $39.95 (Update $9.95) plas 
Shipping $5 US aed Canade ($10 Foreige) 
Updete rer Key from 


COMMODORE WORLD 


BASIC 


USING ML SUBROUTINES 


INS TING" 


If you've been following along the last couple of issues, you've probably 
noticed that BASIC programs lack the speed of their machine language 
counterp: ke a look at how you can go about bridging this speed 
gap in your own programs. 


cts 


Speed Techniques 

There are a number of ways to speed up your BASIC programs. Some 
programmers prefer to write short concise code, excluding all possible 
extras, For example an experienced programmer may code: 


10 fori=@tol5:poke53280, i:next 


Instead of: 


10 rem * flash the border all 16 colors * 
20 for i=@ to 15 

30 poke 53280,4 

40 next i 


Notice how the programmer left out the REM statement and the variable (i) 
after the NEXT statement, The prog 
statement through the use of the colon, Despite the spe 
one line statement, I prefer to use the latter. Readability can be quite 
luable during development, debugging, and maintenance. However, 
don't discount this method just because I don’t like it. It's sometimes 
necessary to sacrifice readability to make your program the best it can be. 

Some programmers compile their programs with a BASIC compiler, 
‘Thisisa wonderful solution. However, it should be considered the last step 
in speeding up your BASIC programs. This method can also present 
problems should you decide to integrate your programs with machine 
age in the future. 


ammer also chose to use a compound 
Jadvantage of this 


langu 


Machine Language Subroutines 

Often times, the best way to speed up your BASIC programs is through the 
strategic use of machine language subroutines. Fortunately, there are a 
number of great pre-written machine languagesubroutinesavailable. These 
can be found in BASIC programming books (Compute’s Programming the 
Commodore 64 and Mapping the Commodore 64 are two fine examples), 
LOADSTAR’s various ML tool boxes (excellent tools available via Softdisk 
Publishing), and in the public domain, So it's not necessary to know 
machine language in order to harness its advantages. Which brings us to... 


This Issue’s Example 

This month’s example focuses on the strategic use ofa pre-written machine 
Janguage subroutine. Asa bonusyou will havea handy subroutine that you 
will use again and again. The subroutine is a directory listing routine. Ttis 
written in BASIC and has a small machine language subroutine ofits own, 


COMMODORE WORLD 


48 


;— 


— 


Lincluded a 100 
performance 


» BASIC version of the directory lister to demonstrate the 
tage of the machine language. The two subroutines 


ad 


Lines L000 - 1199 : BASIC Directory Listing 
Lines 2000 - 2299 : BASIC+ML Directory L 


ibroutine 
ting Subroutine 


These two subroutine: 


are complex; please don't spend too much time 
deciphering them, When you use pre-written subroutines in BASIC or 
machine language this comes as no surprise. The key concept here is not 
how the subroutines work, but how you use them. You will find that using 
pre-written subroutines can save hours of work. 


Project 

See if you ean add the directory listing subroutine (the ML. version of 
course!) to one of your programs. Should you change the line numbers, be 
sure to change them in the THEN and GOTO statementsas well. Ifyouhave 
any previous DATA and READ statements, makesure they won't interfere 
with the subroutine’s initialization; you may have to move lines 2025 to 
2099 near your other R AD looy 
thesubroutineso that you can view different partitionsand sub-directories 
on CMD devices. Hint: Build a path string in the OPEN statement, 


you can edit 


pert programmers: see 


Notes 

Asyou type in this issue’s program, take it one section ata time. 11 
a general idea of what the section is trying to accomplish. See if 
follow how the section is using its riables. Ifyou see an unfamiliar BASIC 
statement, take a quick look at it in your BASIC manual, If you are still 
confused, move on to the next section; often times the next section helps 
explain the previous one, Above all, back your work up frequently! 


y to get 
pu can 


Entering The Program 

Before entering this issue's program, load and run the CHK-LIST utility 
(located elsewhere in this issue), CHK-LIST insures that you enter the 
program correctly the first time, Also, remember to SAVE the program 
before you attempt to RUN it, Itnever hurts to be safe, 


MLDIR.BAS 
5000 | 100 
6dc2 | 105 rem commodore world magazine 
c67c | 119 rem basic instincts w/gene barker 
c38b | 115 rem using ml subroutines 
@e6b | 120 rem 
2d24 125 rem (c)1995 creative micro gns 
92ad | 130 rem a 
1315 135 rem- 
63fa | 140 rem display program name 
e243 | 145 rem- 
6bel 15@ print" (CLEAR/HOME} {CRSR DN}sample di 


rectory driver" 


Issue 11 


1315 
7180e 


£9bb 
88a7 
243 
92fc 
dd7b 
elec 
67b7 


e6bd 
6ab5 
992 
554c 
Ob3d 
ee65 
da6b 
657b 
falc 
e046 
5291 
ald2 
5291 
2703 
5291 
213e 
4936 
ef2a 


£939 


dalb3 
9673 
966b 
bi3£ 
d85a 
£580 
3d5a 
cO54 
ab£5 
8£05 
d870 
1de5 
4e32 
6647 
6cde 
03c6 
Bla9 
21403 
7Obd 
6dg2 


eddc 
e143 
£6£0 
799 


a9ce 
£774 
agd3 
£774 
4985 
9c11 
229¢ 
£19e 
5204 
9fbe 
588 
b2£8 


rem get the desired drive # 
rem- 
print"(CRSR DN}enter drive # (8-31): 


input xd 

if xd<8 or xd>29 then end 

rem- 

rem get desired directory method 

rem (pure basic or ml enhanced) 

rem- 

print"(CRSR DN}use which directory r 


outine:" 


210 
215 
220 
225 
230 
235 
240 
245 
250 
255 
260 
265 
270 
275 
300 
305 
310 
315 
ain 
320 
the 
325 
330 
335 
340 


print"{CRSR DN}(1) pure basic" 
print"(2) basic w/ml enhancement" 
get x$:if x$="" then 220 
if x$<>"1" then 255 
rem- 
rem use pure basic option 
rem-~ 

gosub 1000 
: goto 300 
if x$<>"2" then 220 
rem- 
rem use basic w/ml 
rem- 
: gosub 2000 
rem- 
rem ask if user wants to try again 
rem- 
print"(CRSR DN}do you wish to try ag 
(y/n)?" 
print"{CRSR DN}note: 
ml version" 
print*at least twice.” 
get x$:if x$="y" then 185 
if x$<>"n" then 330 
end 


be sure to try 


1000 rem--------------------=---------- 
1005 rem display directory (basic 

1010 rem 

1015 rem given: xd - device number 

1020 rem------------------------------- 
1025 print chr$(147); 

103@ open 5,xd,9,"$" 

1035 get#5,xx$,xx$ 

1040 get#5,xx$,xx$ 

1045 print 

105@ get#5,x1$,x2s 

1055 if st=@ then 1085 

1060 : close 5 

1965 : print 

1070 : print" [return]" 

1075 : get xx$:if xx$<>chr$(13) then 107 


5 


1080 : return 


1085 
1090 


“ then x1l$=chr$(0) 
“ then x2$=chr$(@) 


1095 print mid$(str$(asc(x1$)+(asc(x2$)* 
256))+"(5 SPACES)*,2,6); 
1100 get#5,xx$:if xx$=chr$(32) then 1100 


1105 print xx$ 
1110 get#5,xx$ 
1215 


£ xx$=""_then 1040 


print xx$; 


1120 goto 1110 


2000 
2005 


2010 rem 


2015 
2020 
2025 
2030 


rem- 
rem make sure ml is setup 


Volume 2, Number 6 


49 


LOAD2.BAS (cont.) 


rem- 
xa=52864 
if xv=999 then 2100 
print:print"initializing ml. 
xi=O:xc=0 
read xv 
if xv=999 then 2080 
poke xa+xi,xv 


: xi=xi+1l:xc=xc+xv 
: goto 2055 
if xi=280 and xc=36966 then 2100 


print error in data statements 
end 

rem- 

rem setup ml call 


rem- 
print chr$(147); 

open 5,xd,0,"$" 

sys xa 

close 5 

rem- 

rem wait for a return 

rem- 

print 

print"{CRSR DN}[return]" 

get xx$:if xx$<>chr$(13) then 2160 
return 


rem- 
rem ml code 

rem- 

data 162,5,32,198,255,162,0,134 


data 144,32,193,206,32,193,206 
data 32,193,206,32,193,206,169 
data 13,32,210,255,32,193,206 
data 141,151, 207,32,193,206,174 
data 151,207,168,169,6,32,240 
data 206,32,193,206,201,32,240 
data 249,32,210,255,32,193,206 
data 240,212,32,210,255,76,182 
data 206,32,207,255,166,144,240 
data 24,224,64,208,6,104,104 
data 32,204,255,96,104,104,32 
data 204,255,169,13,32,210,255 
data 32,210,255,96,170,96,142 
data 147,207,162,0,142,148,207 
data 142,149,207,76,254,206,142 
data 147,207,140,148,207,162 


2 data ©,142,149,207,76,254, 206 


data 141,150,207,173,147,207 
data 174,148,207,172,149,207 
data 133,40,134,41,132,42,169 
data @,141,146,207,162,21,160 
data 255,200,165,40,72,56,253 
data 122,207,133,4@,165,41,72 
data 253,123,207,133,41,165,42 
data 72,253,124,207,133,42,144 
data 6,104,104,104,76,25,207 


2 data 104,133,42,104,133,41,104 


data 133,40,152,172,146,207,208 
data 7,201,0,240,11,141,146,207 
data 9,48,32,210,255,206,15@ 
data 207,202,202, 202,16,185,173 
data 146,207,208,8,169,48,32 
data 210,255,206,150, 207,173 
data 150, 207,240,9,170,169,32 
data 32,210,255,202,208, 250,96 
data 1,0,0,10,0,0,100,0,0,232 
data 3,0,16,39,0,160,134,1,64 
data 66,15,128,150,152,0,0,0 
data @,0,0,999 


COMMODORE WORLD 


Peripheral Vision 


The BASIC Null 
Therearetimeswhen you read information from 
a devi 


are the NULL character (character 
zero) or no character at all. These are not as 
sharply defined as you might think 
When a BASIC program reads a binary file or 
a program file from disk, it’s likely to input Null 
characters, what BASIC would call CHRS(0). It’s 
guaranteed if you're reading another BASIC 
program. But BASIC does a nasty thing when it 
sees such a character: it throws it away and gives 
youa “null string’—no character at all. There’s 
i y work-around for this, but first let's see 
BASIC behaves this w 
Suppose you're reading the keyboard using 
the BASIC GET command, This command 
returns right away, even ifthere's no key input 
waiting in the keyboard buffer, The BASIC 
interpreter asks the operating system for data 
from the keyboard buffer; the operating 
system cither delivers a character or a binary 
zero, which means “no character” (you can’t 
usefully generate a binary zero from the 
keyboard). When the BASIC interpreter sees 
the binary zero, it correctly identifies this as 
no-key, and converts what would be a single 
character string, CHRS(0), into no-character, 
anull string. But the same mechanism is built 
into the GET# command that may be used to 
d disk files, with the result that binary zeros, 
received from such a file are thrown away. 


“nothin, 


Fixing Those BASIC Nulls 

You always get a character when you're reading 
a file from disk. Even if you've foolishly gone 
beyond the end of the file, you'll still get back a 
RETURN character, CHRS$(13). ce the 
computer will never encounter a no-character 
condition duringa disk file read, there are several 
ways to fix the BASIC “null-character to null- 


COMMODORE WORLD 


e but get nothing. The two types of 


By Jim Buttorfiold 


MUCH ADO ABOUT NULL 


string” anomaly. Assume we're about to read a 
character from logical file 1. We might code: 


HRS (0) 


We'll work this coding into a program, but let's 
look at another alternative. Oft 
analyze a binary filein terms of the numeric value 
ofthe bytes. To extract thenumber, we would use 
the function ASC(C$). But—except on the 128— 
that function won't work with a null string: the 
program will stop with an error. We could fix this 
problem with thesame IF CS="" trick given above. 
Or try this: 


we want to 


#1,C$ 


V=ASC (CS+CHR$ (0) ) 


If C$ is not null, the ASC function extracts its 
value; it looks only at the first character of a 
string. ButifC$isanullstring, then theexpression 
inside the parentheses becomes simply CHRS(0), 
and the function returns the correct value of zero. 
It’s faster to define CHRS(0)asa variablenear the 
beginningofyour program. You'll get betterspeed 
with jable in the working loop. 


Demo Program 1 
Program 1isabriefprogram which will copy afile 
and not be bothered by any binary zeros. If you 
save it as MYPROG, it will copy itself when run. 
Without line 210, those binary zeros would 
not copy and you'd have a mess instead of a 
duplicate program. Now let's write a program to 
analyze another BASIC program, digging into 
the numeric values of the bytes (see Program 2). 


The program will report each line within the 
BASICprogram, and where thelinewill be placed 
in memory (assuming the load address is 
honored). 


50 


Machine Language 

‘The above anomaly reverses if you're coding in 
machine language. The call to GET (at $FFE4) 
returns a value in the A register, The program 
knows if it’s seeking information from the 
keyboard, in which case a zero v 
“no key” and may be handled accordingly. If the 
program is reading a disk file, a zero byte in A 
is valid data, and will be handled in the usual 
iy. Incidentally, a call to INPUT (at SFFCF) 
works exactly the same as GET for file reading, 
but not for keyboard/screen input, 


ue in A means: 


The RS-232 Conundrum 

There is peripheral: the RS-232 
communications port, that wants it both ways. 
There might not be any characters waiting; or a 
legitimate CHRS(O) might be delivered asinput. 
we must look at how the computer deals with 


one 


Program 1 


100 Z$=CHRS (0) 

OPEN 15,8,15 

OPEN 1,8,2,"®:MYPROG, P, R” 

INPUT#15,E, ES 

IF E<>@ THEN PRINT E$ : STOP 

OPEN 2,8,3,"@:MYCOPY, P,W" 

INPUT#15,E,ES 

IF E<>@ THEN PRINT E$ 
STOP 

REMARK: MAIN LOOP HERE 

GET#1, A$ 

S=ST :REM SAVE STATUS FOR 

TEST 

IF AS$="* THEN A$=Z$ 

PRINT#2,AS; 

REMARK: DO NOT FORGET THE SE 

MICOLON ABOVE 

240 IF S=@ GOTO 190 

250 CLOSE 2 

260 CLOSE 1 

270 PRINT “FILE COPY FINISHED." 

280 CLOSE 15 


cLOS. 


Issue 11 


this port. The following deals with the“standard" 
RS-232 interface of the VIC-20, Commodore 64, 
Plus-4, and the C128, Special interfaces, such as 
SwiftLink, are not part of the description. 

In all of these machines, characters that 
arrive ata “live” RS-232 port are placed into a 
rotating buffer, usually 256 bytes in size, The 
interrupt system stores the next character by 
means of a “put-‘em-in” pointer. When asked 
for a character from the RS port, the 
system uses a “take-'em-out” pointer to select 
the next character from the buffer. If the two 
pointers match, the system knows that there 
areno characters waiting, and returns binary 
zero... Which you might confuse witha received 
NULL character. 


Figure 1 


The RS-232 receive sequences store incoming 
characters intoa rotating bufferuntil the application 
program takes them out. If the two pointers are 
equal, there are no characters waiting, 


“take-'em-out" 
| pointer to 
“put-em-in" application 
pointer from programs 


NMI interrupt 


Volume 2, Number 6 


Program 2 
190 Z$=CHRS (0) 
11@ INPUT “BASIC PROGRAM NAME"; PS 
120 OPEN 15,8,15 
130 OPEN 1,8,2,"0:"+P$+",P,R” 
149 INPUT#H15,E, ES 
150 IF E<>@ THEN PRINT E$ : STOP 
160 GET#1,A$,BS 
170 X=ASC(AS+ZS) 
180 Y=ASC(BS$+2$) 
190 IF X<>1 THEN PRINT “MAYBE NOT BASIC?” 
200 LaX+256*Y 
21@ PRINT “LOAD ADDRESS = “;L 
220 REM: MAIN LOOP, LINK AND LINE NUMBER 
230 GET#1,A$,BS 
240 KO=ASC(AS+2$) + 256*ASC(BS+2Z$) 
250 IF K®<=L GOTO 360 
260 GET#1,AS,BS 
270 LO=ASC(AS$+Z$) + 256*ASC(BS+Z$) 
280 PRINT “LINE";LO;"AT ADDRESS” ;L 
290 LeLed 
300 IF L@ < Ll GOTO 360 
310 Li = LO 
320 GETW1,A$ 
330 L=L+1 
340 IF ASC(A$+Z$)<>0 AND ST=0 GOTO 320 
350 IF ST=0 GOTO 230 
360 IF KO<>O THEN PRINT “FILE PROBLEM! * 
370 CLOSE 1 
380 CLOSE 15 
39@ PRINT “FINISHED. " 


VIC - 20 and Commodore 
Commodore 128 (bank 0) 
Plus-4 


put-‘em-in  take-‘em-out 
64 667 668 
2584 2585 
2001 2001 


Figure 1 shows the idea, One 
pointer puts received characters 
into the buffer, and the other is 
used to get the 
they are needed, The butte 
the Plus-4 is 64 bytes in size, 
versus 256 bytes on all other 
machines, Thatseemsunfair; the 
Plus-4 with its ACIA chip has 
the highest communications 
capability of any of the 8-bit 
Commodore computers, 

‘The two pointers: put-'em-in 
and take-em-out, are each one 
bytein size. Theirlogicis carefully 
arranged: ifthe buffer fills up, the 
pointers won't “cross” so that 
you'll lose everything, Of course, 
you'll lose some characters since 
there's no place for them. The 
solution is to check to see if the 
two pointers are equal. If they are, you have no 
characters waiting, and your program can go on 
to other work. If the two pointers are not equal, 
you may command GET# and be sure—even if 
it's a NULL—that you have received a valid 
character, 

The only useful test you can perform on these 
pointersisforan equals condition. The characters 
are placed into a “rotating” buffer, so either 
pointer might have a value higher or lower than 
theother. Also, the put-'em-in pointerisinterrupt 
driven: it might change as you are testing it! 


aracters when 
for 


Pointer Location 
The address of the two pointers is not the 
same in all machines. The table below is a 


summary of their addresses. The addresses are 
given in decimal, suitable for BASIC use. 
Remember in BASIC, you still have to convert 
any received null strings to CHRS§(0)as discussed 
above. The code would go somethinglike this for 
a Commodore 64 or VIC-20; 


100 OPEN 1 


.« then, within a loop: 


500 IF PE 
600 


Goro 


K (667) 


PE 


(668) 


:REM IF NOTHING 


900 ¢ 


The approach in machine language is almost 
identical. Thesubstitute forlines 500 to520above 
might read as seen in Program 3, below, 


Short Notes 

| should mention that there is no problem with 

outputting NULL characters, as you may have 

guessed from programs above. Send a CHRS(0) 

and it will get to its destination unless you're 

sending it to the screen, where it will do nothing. 
Some users are confused about the difference 


between NULL, binary zero, and the'0’ character 
on their keyboard, Just keep in mind that the ‘0° 
character is really character number 48 
(hexadecimal 30), so it’s distinct from the NULL 


Program 3 

PUTEMIN = $298 

TAKEMOUT == $29¢ 
LDA PUTEMIN 
CMP TAKEMOUT 
BEQ ... ; (branch if no character) 
LDX #801 logical device 1.. 
JSR $FFC6 «-CHKIN, connect input stream 
JSR SFFE4 .-GETIN, get the character 
PHA ; save the character on stack 
JSR $FFCC + .,CLRCHN, restore input stream 
PLA 7 restore input character 


51 


COMMODORE WORLD 


Our first steps in machine language will emphasize debugging. It's good to 
confirm that your program works correctly, step by step, and to explore 
how instructions work, 

Our universal tool for this work will be a Machine Language Monitor 
(MLM). On the Commodore 128 or Plus-4, you have one built in; on other 
machines, you'll need to load one. I suggest you try the public domain 


MLM, “SuperMon”. Its operation is very close to that of the built-in 
monitors, so we can all use the same commands and see comparable 
display data 

SuperMon" is largely for the Commodore 64, But other versions are 
around on networks and bulletin boards. There’sa tiny one for the VIC-20; 
tiny because of the small memory on that machine, and also trimmed to fit 
into the limited screen width. The old PET/8032 computers havea built-in 
machine language monitor, but these are not fully featured. For example, 
there’snoassembler/disassembler builtin, So there'sa version ofSuperMon 
for those machines, too, 


With an MLM, youcan enter program code, you can check code, you can 
save it, and you can examine how it runs. Most MLM packages contain a 
“tiny” assembler, which we'll use here. Ifyou happen tohavea full-featured 
“symbolic” assembler, you can use it to prepare the program if you wish, 
but for debugging you'll need to come back to the MLM. By the way, other 
platforms call the MLM a “debugger"—it's really the same thing, 


About Registers 

The 6502-class chip that powers all Commodore 8-bit computers contains 
storage areas—called “registers"—within the chip. Three are used for data: 
they are named A, X, and Y, and we'll talk about them in a moment, One 
register (SP, “stack pointer") is used for the stack; we won't worry about it 
right now. Another is called PC, for “program counter”; it shows us the 
address in memory where the processor will look for its next instruction. 
On other platforms, the PC may be called 1P (“instruction pointer”). 

led the SR (“status register”). It holds the 
results of recent tests, and also certain processor control information. We 


Finally, there’s a register ¢ 


may need to look at this one during debugging sessions. 

Figure 1 shows the registers that are inside your processor chip. All 
exeept the PC are eight bits long; that means they can hold a value from 0. 
to 255 (hexadecimal FF), or, if'you like, an ASCH ch 

Register A is sometimes called the “accumulator”; registers X and Y are 
often called “index registers”. Any of the three can be used to hold data; 
you can load it in, test its value, and store out a copy. We'll use a couple of 
them in the short program given here. 


eter, 


COMMODORE WORLD 


52 


FIRST REGISTERS, FIRST DEBUGGING 


Planning the Program 
Ourfirst program will reverse the contents oftwo locationsin memory, It's 
a start, and you'll have a chance to do programming and debugging, 
We need to pick a location for this short program. Because of the wide 
variety of machines that might be used, I'll pick the area around address 
8192, hex 2000, which is available on most machines. (On an unexpanded 
VIC-20, you'll need to pick a lower address, say 7424, or $1D00).The two 
data locations can be any convenient placein RAM. Ifyou havea “memory- 
reen, you might pick a couple of addresses there, so that you 
can actually see the characters being swapped ,. but that won't work on the 
80-column C128, of course $2100 and $2101. 


mapped" s 


for the moment, I'll choo: 


Getting Started 

Ifyou don’t have a built-in Machine Language Monitor, load one in. With 

SuperMon, for example, you load the program, command RUN, and you're 

in business. With the Plus-4 or Commodore 128, just command MONITOR, 
You'll see a display of the processor's registers, Ignore them for the time 

being. Type the following command: 


A 2000 LDA $2100 


When you press [RETURN], you might be surprised to find that the above 
line has been changed, First, let's look at what you have type: 


A-stands for Assemble. The instruction you type will be translated into 
machine code. 


2000 - is the address at which you wish to assemble this instruction, 


It's 2000 hex, ordecimal 8192, Ifyou don't tell it otherwise, the MLM will 
always assume hexadecimal. Most versions of SuperMon and other 
monitors willallow you to enter decimal by puttinga +’ sign ahead of the 
+8192 LDA +8448 and produce the same 


value, so that we could cod 
result. 


LDA-acommand to Load the A register, The data loaded will be a copy: 


the original value will still be in memory, 


$2100 - the address from which to load. You could omit the 'S’ symbol, 
since the MLM assumes hexadecimal. 


Issue 11 


When you press RETURN , the line you have typed changes. To the left of 
the LDA command, you'll see three bytes of information—the translated 
command as stored in memory. And if you happened to put in any values 
in decimal, using the ‘+’ sign, you'll find they have been changed to hex. 

Additionally, you'll find that the MLM has typed part of the next line for 
you: ‘A 2003’, This helps guard against you miscalculating the address 
where the next instruction is to go. Complete this next line with the 
command NOP. That's an instruction that does NOTHING. Seems like a 
waste of processor time and memory, but it will help with our testing later. 
Our plan is to load A and X with the two values to be swapped, and then 


store the register contents back, the other way around. Here's what the 
lines you type in for the rest of the program should look like: 


2004 
2007 
2008 
2008 
200C 
200F 
2010 


LDX 
NOP 
STA 
NOP 
STx 
NOP 


RTS 


$2101 


$2101 


$2100 


>>> D> DD 


You can guess LDX to be “load X”, and STA, STX to be “Store A, Store X” 
respectively, I Return from Subroutine”; it will take the program 
back to who will normally be Basic. 

Even though you're finished, the MLM will continue to prompt you with 
‘A 2011, just press RETURN to signal that you're finished. The program 
has been stored in memory as you type. You can double check it by 
commanding: D 2000 2010 (‘D' stands for Disassemble), 

Keep in mind that we have not executed any of the instructions; we've 
just put them in memory, ready torun. Type to see the registers again and 
you'll see that nothing has changed. Now return to Basic with command: X 
(for exit’). 


Running 
Set the two locations in memory with POKE commands: 


POKE 8448,0 
POKE 8449,200 


Ifyou wish, you may check these values using PEEKQ. Or you can return to 
the MLM, and check the memory locations with M2010 2011; you'll see the 
first two bytes as 00 C8, 

From Basic, command SYS 8192. You'll get READY right aw ay, the 
program has run in an instant, PEEK addresses 8448 and 8449 , you'll see 
their contents have been reversed! SYS 8192 again, PEEK again, and the 
values are back where they started. 


Testing and Debugging 
Let's go back tothe MLM and disassemble the program with D 20002010, 
Move the cursor up carefully, and change each NOP to BRK; just type over. 
Press RETURN on each line you make the change. BRK stands for “Bre: 
we're going to stop the program at each point. When you're finished, back 
to Basic, and command SYS 8192 again, 

This time the program stops at the first BRK instruction. That's at 
$2003, and the PC should be pointing at the following instruction, at 
$2004. As you'll see from the register display, it’s pointing at $2005 


Volume 2, Number 6 


53 


instead, That's an anomaly in the BRK instruction, nothing to worry 
about. 

Again, it’s convenient to type D 2000 2010 again ifyou want to see your 
program, You can see that we have executed the LDA instruction, and the 
Aregister (AC) contains the value copied from address $2100. It's probably 
zero, ifyou've been following the instructions closely, and thatallows us to 
check something else: the Status Register (SR). 


Status Register 
Figure 1 shows that the Status Register is made up of eight bits, each of 
which has a distinet meaning, We'll be concerned only with the high bit, 
dN (“negative”), and the two lowest ones, marked Z (“zero”) and C 
(“carry”). You'll likely see a value of $32 in the register, so we must change 
this to binary to see the bits, That's easy with hexadecimal; 3 is 0011, and 
2 is 0010, so we see that N is 0, Zis 1, and Cis 0. 

After every register load or change, the Z flag is adjusted to reflect if the 
value is zero (yes, so flag Z is 1.), and the N flag is adjusted to reflect if the 


value’s high bit is on (no, so flag N is 0.). A register load command won't 
change C, so we ean ignore that flag ; it won't change during this program. 

Weexpect thenext value to be loaded (to X) will be $C8, binary 11001000, 
That's non-zero, and its high bit is on, so we expect to see flag Z offand flag 
Non. Continue the program with: G 2004. You're likely to get a SR value of 
BO—binary 10110000—which confirms flag N as set and flag Z as clear. 
‘The value in XR will have changed, since data has been loaded in there; the 
value in AC will be the same. 

“Store” commands never affect any flags in the status register. So try 
continuing with command 2008 and G 200C and you'll see that the 
value in SR stay y, G 2010 takes us back to Basic. 


s the same, Fina 


Summary 
Writing a program is only part of the job. Testing it, to make sure it does the 
right thing, is the other part. If you know your way around the MLM, you 
can not only test your programs effectively. You can also see in detail how 
commands work. The logic need not be fuzzy. With good use of the MLM, 
the computer will always tell you what it is doing. 
Incidentally, ifhexadecimal and binary still fog you, take some time out 
and try to learn it. You'll be that much more effective in programming and 
testing if you become a “hex nut”, 


| pe | ; 
A ene \ 
ack Wag tacens 
yom 


Negative 
Overf lou 


Carry 
Zero (Equals) 
TRO lockout 

Decimal Mode 


Break 


Figure 1. Registers 


inside the processor chip. 


COMMODORE WORLD 


How to Type In Program Listings Appearing in 
Commodore World 


While Commodore World currently doesn’t make it a habit of publishing 
type-in programs, a number of our columns do require entering sample 
routines. For this purpose, we have created our CHK-LIST utility for the 
Commodore 64 and 128. This utility uses a 16-bit CRC checksum method 
to verify that you have correctly entered each program line, and that each 
of the characters in the program lines are in the correct order. 

You'll notice that program listings appear with a column of values to the 
left of the program lines. These values are the CHK-LIST values and are not 
to be entered as part of the program. A similar set of values are generated 
by the CHK-LIST utility to allow you to verify that everything has been 
entered correctly. 

Enter the CHK-LIST program from BASIC, You can use either a C-64 or 
aC-128 computer. Ifyou use a C-128, it can be in either 64 or 128 mode. Be 
sure to enter each line carefully to avoid mistakes—until you actuall 
CHK-LIST working, finding errors in program entry won't be easy. After 
you have finished entering the program, be sure to SAVE a copy to disk 
before you attempt to RUN it, justin case. Ifyou aren't familiar with howto 
save a program to disk, you can use the following command: 


10 BS (PEEK (65533 
NM=4864 
6E2F | 12 C=: PRINT" (CLR/HOME) WORKING"; 
E350 | 20 READD: IFD=-256THEN4O 
AD2@ | 30 C=C+D: IFD<@ANDF=OTHEN20 
3316 | 31 IFD<OTHEND=9-D:M=M-1 
Q7FO | 32 POKEM,D:M=M+1: PRINT". "3: 
578A | 49 PRINT: READCK: IFC<>CKTHENPRINT"ERROR I 
N DATA STATEMENTS! *: END 
@679'| 50 PRINT" DONE.": END 
8D92 | 60 : 
BYFE | 49152 DATA 165,43,-45,133,251,165,44,-46 
133,252 
B2AE | 49160 DATA 169,0,141,36,193,-20,169,147, 
32 
CD50 | 49168 DATA 210,255,32,194,192,-19,160,0, 
140 
€9CD | 49176 DATA 37,193,-20,177,251,133,253,20 
8,3 
2058 | 49184 DATA 238,37,193,-20,200,177,251,13 
3,254 
BA9C | 49192 DATA 208,3,238,37,193,-20,173,37,1 
3,-20 
6C15 | 49200 DATA 201,2,208,1,96,200,177,251 
B7@E | 49208 DATA 170,200,177,251,32,205,-50,18 
9,-142,169 
6795 | 49216 DATA 6,133,211,-236,169,61, 32,210, 
255 
FOF | 49224 DATA 169,32,32,210,255,160,2,177 
9735 | 49232 DATA 251,32,213,192,-19,200,177,25 
1,32 
9734 | 49240 DATA 213,192,-19,200,177,251,240,6 
+32 
D99D | 49248 DATA 213,192,-19,76,90,192,-19,173 
,191,192,-19 
AC3O | 49256 DATA 32,167,192,-19,173,190,192,-1 
[ 9,32,167 


COMMODORE WORLD 


54 


Touse CHK-LIST, load itinto your computer and type RUN. Makesure that 
any program youare currently working on is saved first, or start CHK-LIST 
before you begin typing in a new program. After you have CHK-LIST in 
memory and running, type NEW. You may now either load or begin typing 
the program you wish to have CHK-LIST check on. Whenever you want to 
check your program, type in the appropriate SYS command given below: 


C-64 or C-128 in 64 mode: 
C-128 in 128 mode: 


SYS49152 
SYS4864 


Note that when typing in listings, some special characters will appear in 
braces. For example, (CLR/HOME} means that you should enter the Clear 
key, which is done by holding down the SHIFT key while you press the 
HOME key. Other tim ee anumber ahead of the key name, such 
as (3 SPACES} or (5 CRSRL). Thismeans you should press the key indicated 
the number of times shown. Most special keys are easy to identify, since the 
text shown will generally match the text on the key, Exceptions are the space 


bar {SPACE}, and cursor keys which include directions ((CRSR UP}, {CRSR 
DN}, (CRSRL} and {CRSR RT). Besure to use the correct key combinations 
for color keys, such as <CTRL><2> for (WHT). 


CHK-LIST (cont,) 


49264 DATA 192,-19,169,13,32,210,255,165 
+253 

49272 DATA 133,251,165,254,133,252,238,3 
6 

49280 DATA 193,-20,173,36,193,-20,201,20 
1240,3 

49288 DATA 76,18,192,-19,162,0,189,1,193 
720 

49296 DATA 240,6,32,210,255,232,208,245, 
32 

49304 DATA 228,255,201,13,208,249,32 
49312 DATA 228,255,208,251,76,8,192,-19, 
72 

49320 DATA 106,106,106,106,32,180,192,-1 
9,104 

49328 DATA 32,180,192,-19,96,41,15,170,1 
89 

49336 DATA 20,193,-20,32,210,255,96,0,0 
49344 DATA 0,0,169,0,141,190,192,-19,141 
49352 DATA 191,192,-19,169,33,141,192,19 
2,-19,169 

49360 DATA 16,141,193,192,-19,96,162,8,7 
2 

49368 DATA 41,127,77,191,192,-19,141,191 
,192,-19 

49376 DATA 24,14,190,192,-19,46,191,192, 
-19,144 

49384 DATA 18,173,192,192,-19,77,190,192 
,719,141 

49392 DATA 190,192,-19,173,193,192,-19,7 
7,191,192,-19 

49400 DATA 141,191,192,-19,104,10,202,20 
8,215 
49408 
49416 
49424 
49432 
49449 


DATA 96,13,80,82,69,83,83,32 
DATA 60,82,69,84,85,82,78,62 
DATA 13,13,13,0,48,49,50,51 
DATA 52,53,54,55,56,57,65,66 
DATA 67,68,69,70,0,0,-256,37944 


Issue 11 


ChAD Service Center 


AFFORDABLE ¢ FAST « DEPENDABLE 


Call Today 1-800-638-3263 
Our Team of Technicians are Among the Most 
Qualified in the Industry! 
Why Settle for Anything Less Than the Best? 


We repair the following equipment: Commodore C-64, 64C, SX-64, C-128 
and C128-D computers; 1541, 1541C, 1571 and 1581 Disk Drives plus 
CMD Devices. JiffyDOS Installations a specialty. All repairs warranted for 
30 days. Minimum charge $35.00 plus parts and return shipping. Contact 
CMD for authorization before sending any equipment. 


Creative Micro Designs, Inc. P.O. Box 646 E, Longmeadow, MA 01028 


UPGRADE YOUR COMMODORE: 


Rofurbished Hardware Hew! a 

Monitors Other New APR los 
1701 $169.95 1541/C $99.95 C64- $99.95, PE TTT $118.98 
1702 $169.95 41 wiDips $114.95 64C- $119.95 Usor Switch $44.95, 
102, $1000 Is4isI" §12005 128 $170.95 Convar-A-Com $46.95 
18020 $200.95 1571 $169.95 1280 §320.95 

Taam up al SIGE 1, SUE | Now CMDILMS Accossorion: 
1902A $259.95 MSD-2 $149.95 1660 $24.95 JWDog iazaD ‘System «$79.98. 


1084 $299.95 1001SFD $129.95 1670 $99.95 
1084S $339.95 B.| Buscard-tl $59.95 
Mono’s $49.95+ 1530 Datasetta $39.95 


128Kernal $59.95 64 Kernal $49.95 
Additional JitfyOOS Drive ROM $39.95, 
RAMLink Bs, $239.95 clwOMB $289.95, 
CwW1MB | $319.95 cw 4MB $449.95 
$49.95+ Real Time Clock (Optional) Add $29.95 
$34.95 FD.2000 $249.95 FD-4000 $349.95 
$49.95 NEW Supor Snapshot v5.22 $89.95 
$199.95 1750 Supercione REU 512K $199.95 


‘Books$10-$15 Printer Intertaces: 
Prog’s $5-S20 _ Epyx Fastload Cartridge 
Repairs SASK Super Snapshot v4 
Manuals $7 Super Gratix Jt 

‘Ask For Anything! We May Have itt 


LP. PAM Products By Mail 
Box# 60515, N. Shoridan Mall PO 
Downsview, Ont. Canada M3L.180 Allow 4-6 wooks for delivery 
Tax-Canada + 7%GST, Ontario +8% PST 1995 Catalogue Disk (64 Format) — $2 


Shipping-(S0-$25=$4, $26-899=10%, $100-§199=8%, $200-$499=7.5%, $500+=6%, USA=15%) 


E X P A N OD 
YOUR SYSTEM 


5B SLOT CARTRIDGE PORT EXPANDERS 


The EX2+1 and EX3 Cartridge Port Expanders bring new 
expandability to you Commodore 64 or 128. Combine the 
use of compatible cartridges. Disable cartridges notin use. 
Change the address your computer finds a cartridge at. 
Avoid the constant changing of cartridges that puts extra 
wear on your cartridge port. The EX3 offers 3 vertical 
expansion slots, while the EX2+1 provides 2 vertical slots 
and 1 horizontal slot. Both units offer 7 switchable signals 
per slot, address mapping on slot 2, and a reset button. 


CALL 1-300-638-3263 


‘Sond GON Funds/15% USA Exchange 
15 day Warranty On Returbished Haw 


$29.95 


Creative Micro Designs, Inc., P.O. Box 646, East Longmeadow MA 01028 


Volume 2, Number 6 


SODAK ELECTRONICS INC. 


Nintendo® and Sega® Repair and Parts 
Authorized Commodore Qualified Service Center 
Computer Monitor and Printer Repair - All Types 
Flat Rate on Most Repairs 
Nintendo® and Sogar® are Registered 


Trademarks of Nintondo of Amarica 
and Sega of Amorica rospactvoly, 


800-201-3004 


Lamar Nance 
603 S. Mable, Sioux Falls, SD 57103 
(605) 335-3004 


MOVING? 


> PP PP PP 


Don't forget to let us here at 
Commodore World know! 


Call or write with your change of address 
6 to 8 weeks prior to your move so that 
you won't miss a single issue! 


55 COMMODORE WORLD 


ADVERTISERS 


C64/128 PUBLIC DOMAIN. REQUEST FREE CATALOG OR 
SEND $2 FOR A DEMO & CATALOG. CALOKE IND., P.O. 
BOX 18477, RAYTOWN, MO. 64133. VISA-M/CARD 
ACCEPTED. 


C-64 FOREIGN-AMERICAN Utilities, Graphics, 
Hacker, Arcade. 32¢ stamp gets catalog. Home- ISP a. ssnenesas 05) 


Spun Software, POB 1064-CW,Estero,F 3928 Caloke Industries . . (Classified) 56 
Centsible Software . 

Commodore Country. 

Commodore World.... 

Computer Bargain Store 

Creative Micro Designs 5,30,31,34,41,43,55, 


GEOS PUBLICATION. The exclu 
publication. $8.50 yearly, $16.00 

years. Feb. 1st 1996 rates become $12.0 
and $20.00 for two years. Join NOW and 


GRASSROOTS #1. C= history, hardware, help on 


full 2 sided info disk. Send $3. & system info . Back Cover 
to Donald Ayers, 75 State Rd. 270W, Sturgis, KY | Creative Pixels we 85 
ead Home-Spun Software . (Classified) 56 
Reconditioned C64 and 1541 Disk Drive also some GEOS Publication .. (Classified) 56 
used Commodore parts. For information send a Intercorp 235 


SASE to Chuck 30102 Pacific 
Nigel, CA 92677. 


and Dr., Laguna | J.P. Products by Mail 55 
Loadstar .. 


RUN, Ahoy, Commodore, COMPUTE!’s Gaz., | MadMan Software. 
Transactor, Home Comp., High Tech., INFO, etc. Paxtron.. 

D. Marquis, 477 Church Rd., Palmetto, FL 34221 
8426, 941-722-8426. 


Software Support Int. Inside Front Cover 


SUBSCRIBE to Commodore Gazette; Christopher hs Underground “ SS 
Ryan; 5296 Devonshire; Detroit, MI 48224-3233; migne!, 
lyr, $12 / 2 yr. $24 / 3 yr. $36. - 85 


FOR SALE 
$290, SMAF R 
CONDITION. 815-259-2816. 


RUN magazine, all issues 1987 thru 1992. Don't forget to let Commodore World know. 
Commodore MPS 801 Printer, 1541 drive. r. | Call or write with your change of address 6 to 
Elliot 228 Star Hill, Swansboro, NC 28584 8 weeks prior to your move so that you won't 


Wanted to Buy Voice Synthesi for the C64. miss a single issue! 
Prefer Hearsay 1000, but will take any that can 
speak AND hear voice commands. 813-914-5410 


(beeper) « DON’T WAIT UNTIL IT’S 
WANTED: Leader Board Tournament Disk TOO LATE— 
World Class Leader Board. Reply to: 810-744- RENEW EARLY! 


4093 (Roger). 


|s your Commodore World Subscription getting close to running 
out? There's an easy way to check. Look at the mailing label on 
the front of your copy. There you'll find your subscription number 


COoOMMoOoDOR& 
WwoRlD 


Classified Advertising 
Subscribers may place non-commercial classified 


and the expiration issue number. For example: 


James Smith 12345ExP12 
123 Home Street 
Grand Rapids, MI 49502-0123 


advertising in Commodore World at a cost of $10.00 per 
issue. Your advertisement may contain up to 150 characters 
(including spaces). Commercial ads are $10.00 per line 
(45 characters). Send your advertisement with payment 
to: CW Classified Advertising, c/o Creative Micro Designs, 
Inc., P.O. Box 646, East Longmeadow MA 01028-0646. 


Jim's subscription will run out with Issue 12, as indicated by the 
EXP12inhissubscription code. Jim would be wise to re-subscribe 
early to avoid missing a single issue of Commodore World! 


COMMODORE WORLD 56 Issue 11 


| 
J 
: 


y 


1] TOUG 


CALESCND ) 


re 
163902593545 


fo Supserigs 


D conmosor World is the publication 
that will keep you informed in these times 
when up-to-date information on 
Commodore computing is so hard to find. 
Published by Creative Micro Designs, the 
industry leader in development of 
Commodore-related products for over six 
years, Commodore World will supply you 
with information on what's new, what's still 
available, and above all else—where to 
get it. If you felt you had nowhere to turn 
to for Commodore support, turn to the 
pages of Commodore World for a wealth 
of resources ready to help you get the 
most from your computer! 

You'll find Commodore World feature 
articles informative and easy to read; 
what's more, they're written by leading 
authorities and experts, many of whom 
have written for other Commodore-related 
publications in the past. And Commodore 
World has something for everyone, 
whether you're a novice or an experienced 
programmer. 


, «x emZ iat Je 


33 


And while our feature articles help to 
cover different subjects in each issue, 
regular columns provide on-going insight 
into topics of interest to most users. You'll 
find columns that cover BASIC and 
advanced programming, and even a 
column for GEOS programming. And if you 
prefer being a GEOS user to being a 
GEOS programmer, you'll find another 
column devoted to helping you get more 
out of GEOS. If you want to learn more 
about using and programming the various 
peripherals on your system—you guessed 
it, we've gota column for that as well. Even 
first-time Commodore users will find a 
column devoted specifically to their needs. 

And there's even more. Departments 
that cover news, telecommunications, 
reviews of available hardware and 
software; even news of what's happening 
in other Commodore-related publications! 

So, if you really want to get the most 
from your Commodore, there's no better 
way to get it than Commodore World! 


Columns 
Just For Starters - An introduction to the C64/ 
128 by Steve VanderArk 
Foreign Exchange - An inside look at the market 
in Europe by Joseph Gaudl 
Graphic Interpretation - GEOS, GEOS and more 
GEOS by Steve VanderArk 
geoProgrammist - GEOS programming 
techniques by Maurice Randall 
BASIC Instincts - BASIC tutorials and type-in 
programs by Gene Barker 
dim Butterfield's ML Column - Probably the best 
known name in our industry, Jim covers every 
aspect of programming in ML (coming soon) 
Peripheral Vision - Technical insights to C-64/128 
hardware peripherals 
Carrier Detect - Exploring every facet of the 
Telecommunications experience 
Over The Edge - Editorial covering various 
computer related topics and news 


Departments 
From The Editor + BackTalk * On The Horizon 
Just Asking * The Connection * Top Tips 
User Group Connection + Commodore Trivia 
BBS Spotlight * Classified Ads 


CF” EB E Sa Ed CS 


‘Get ready td’ blast.off in February ’96! 
CMD is going to take you where 
no C-64 user has gone before. 


in! 
ANI 


en contacting CMD in 
rs to voice their 
port tor the Super CPU and {fi j 
request developer packages. : m Ric wkonanl 
le are very enthusiastic with ‘a P ; \ serial 
el response and look forwai 
| owitle-spregal support! 


ae FUREU [Can /exp 
i Compatible] _ Port 
‘urboMaste 
cPU it 


Flash-8 8 MHz 4 No No 


Super64/10} 10 MHz 5 Yes Yes 


rics torial siowewzo| commie | 10 | “vos 
‘ 


n on the ‘Millions of Instructions per Second. The Super64/20 
1 beats even a 25 MHz 386SX (8 MIPS).